Основы 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: ООП практика, классы и наследование