Основы TypeScript: ООП практика, классы и наследование
Эти концепции позволяют моделировать реальные объекты структурированным и удобным для сопровождения способом. Присоединяйтесь к нам, поскольку мы исследуем глубину ООП в TypeScript, предоставляя понимание создания модульного и многократно используемого кода.
Классы
Класс — это схема для создания объектов со свойствами и методами. Он позволяет моделировать реальные объекты в коде.
Пример базового класса:
class Animal {
// Свойства
name: string;
age: number;
// Конструктор
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
// Метод
makeSound(): void {
console.log("Some generic sound");
}
}
// Создание экземпляра класса Animal
const myAnimal = new Animal("Leo", 5);
console.log(myAnimal.name); // Вывод: Leo
myAnimal.makeSound(); // Вывод: Some generic sound
В данном примере Animal
— это класс со свойствами (name
и age
), конструктором для инициализации этих свойств и методом (makeSound
).
Наследование
Наследование позволяет классу наследовать свойства и методы от другого класса, что способствует повторному использованию кода и созданию иерархических отношений.
class Dog extends Animal {
// Дополнительные свойства
breed: string;
// Constructor
constructor(name: string, age: number, breed: string) {
// Вызов конструктора базового класса (Animal)
super(name, age);
// Инициализация свойства производного класса
this.breed = breed;
}
// Переопределение метода makeSound
makeSound(): void {
console.log("Woof! Woof!");
}
// Дополнительный метод, специфичный для Dog
fetch(): void {
console.log("Fetching the ball!");
}
}
// Создание экземпляра класса Dog
const myDog = new Dog("Buddy", 3, "Labrador");
console.log(myDog.name); // Вывод: Buddy
console.log(myDog.breed); // Вывод: Labrador
myDog.makeSound(); // Вывод: Woof! Woof!
myDog.fetch(); // Вывод: Fetching the ball!
В этом примере Dog
является подклассом Animal
. Он наследует свойства и методы от Animal
, а также может иметь свои собственные свойства и методы. Ключевое слово super
используется для вызова конструктора базового класса.
Модификаторы доступа
Модификаторы доступа управляют видимостью членов класса (свойств и методов). TypeScript поддерживает модификаторы доступа public
, private
и protected
.
class Person {
private age: number;
constructor(private name: string, age: number) {
this.age = age;
}
getDetails(): string {
return `${this.name}, ${this.age} years old.`;
}
}
const john = new Person("John", 30);
console.log(john.getDetails()); // Вывод: John, 30 years old.
// console.log(john.age); // Ошибка: Property 'age' is private and only accessible within class 'Person'.
В этом примере age
помечен как private
, что делает его доступным только в классе Person
.
Абстрактные классы
Абстрактный класс — это класс, который не может быть инстанцирован и часто используется в качестве базового класса для других классов.
abstract class Shape {
abstract calculateArea(): number;
}
class Circle extends Shape {
constructor(private radius: number) {
super();
}
calculateArea(): number {
return Math.PI * this.radius ** 2;
}
}
const myCircle = new Circle(5);
console.log(myCircle.calculateArea()); // Вывод: 78.53981633974483
Здесь Shape
— это абстрактный класс с абстрактным методом calculateArea()
. Класс Circle
расширяет Shape
и предоставляет реализацию метода calculateArea()
.
Практика ООП с классами и наследованием в TypeScript позволяет создавать модульный, многократно используемый и хорошо организованный код. Они помогают моделировать сложные системы таким образом, чтобы они отражали реальные сущности и отношения.
Основы TypeScript
- Основы TypeScript: компилятор TypeScript (
tsc
) иtsconfig.json
- Основы TypeScript: JavaScript в сравнении с TypeScript
- Основы TypeScript: Примитивы и базовые типы
- Основы TypeScript: Неявные и Явные типы, Утверждения типов
- Основы TypeScript: Создание типов, перечислений и интерфейсов
- Основы TypeScript: Объединение, Литеральные и Размеченные типы
- Основы TypeScript: Типизация функций и сигнатур
- Основы TypeScript:
Any
,Void
,Never
,Null
, Строгие проверки Null - Основы TypeScript: ООП практика, классы и наследование