Как наследуются от класса в TypeScript?
Типизация классов и ООП
Класс в TypeScript наследуют через `extends`, вызывая конструктор родителя через `super()`.
class Animal {
constructor(protected name: string) {}
speak(): string {
return `${this.name} издаёт звук`;
}
}
class Dog extends Animal {
constructor(name: string, private breed: string) {
super(name); // обязательно до обращения к this
}
override speak(): string {
return `${this.name} лает`;
}
}Что важно
- `super(...)` нужно вызвать в конструкторе потомка до использования
this. - Модификаторы доступа:
private— только в самом классе,protected— в классе и потомках,public— везде. - `override` явно помечает переопределённый метод; с флагом
noImplicitOverrideбез него будет ошибка. - Абстрактные классы (
abstract class) нельзя создать напрямую, а абстрактные методы потомок обязан реализовать. - `implements` — проверить, что класс соответствует интерфейсу (это не наследование реализации).
Совет
Наследование глубже 1–2 уровней усложняет код — часто лучше композиция.
Коротко для собеседования
class B extends A, в конструкторе super(); доступом управляют private/protected/public, переопределение помечают override, abstract задаёт обязательные методы.
Подробнее: TypeScript Handbook — Classes