Что такое множественное наследование в TypeScript

Ответ

TypeScript не поддерживает множественное наследование напрямую, как некоторые другие языки (например, C++). Однако есть несколько способов добиться похожего поведения:

  1. Миксины - паттерн, позволяющий комбинировать функциональность из нескольких классов:
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]);
  1. Композиция (предпочтительный способ) - использование других классов через включение:
class Engine {
  start() { /* ... */ }
}

class Wheels {
  rotate() { /* ... */ }
}

class Car {
  private engine = new Engine();
  private wheels = new Wheels();

  drive() {
    this.engine.start();
    this.wheels.rotate();
  }
}

Лучше использовать композицию, так как она более гибкая и проще в поддержке, чем классическое множественное наследование.