Ответ
TypeScript не поддерживает множественное наследование напрямую, как некоторые другие языки (например, C++). Однако есть несколько способов добиться похожего поведения:
- Миксины - паттерн, позволяющий комбинировать функциональность из нескольких классов:
class Disposable {
dispose() { console.log('Disposed'); }
}
class Activatable {
activate() { console.log('Activated'); }
}
class SmartObject implements Disposable, Activatable {
dispose: () => void;
activate: () => void;
}
applyMixins(SmartObject, [Disposable, Activatable]);
- Композиция (предпочтительный способ) - использование других классов через включение:
class Engine {
start() { /* ... */ }
}
class Wheels {
rotate() { /* ... */ }
}
class Car {
private engine = new Engine();
private wheels = new Wheels();
drive() {
this.engine.start();
this.wheels.rotate();
}
}
Лучше использовать композицию, так как она более гибкая и проще в поддержке, чем классическое множественное наследование.