[typescript] 자식 클래스는 여러 개의 부모 클래스를 상속받을 수 있는가?

이러한 제한으로 인해 클래스는 여러 개의 인터페이스를 구현할 수 있지만, 여러 클래스에서 상속을 받을 수는 없다. 일반적으로 이러한 제한으로 인해 다중 상속 대신에 믹스인(mixin)이나 인터페이스를 사용하여 유사한 동작을 구현하는 경우가 많다.

아래의 간단한 예시를 통해 설명해보겠다.

class Animal {
  move() {
    console.log('Moving...');
  }
}

class CanSwim {
  swim() {
    console.log('Swimming...');
  }
}

class CanFly {
  fly() {
    console.log('Flying...');
  }
}

// 하나의 클래스는 여러 개의 인터페이스를 구현할 수 있음
class Duck implements CanSwim, CanFly {
  swim() {
    console.log('Duck swimming...');
  }

  fly() {
    console.log('Duck flying...');
  }
}

const duck = new Duck();
duck.swim(); // 출력: Duck swimming...
duck.fly(); // 출력: Duck flying...

위의 예시에서 Duck 클래스는 CanSwimCanFly라는 두 개의 인터페이스를 구현하여 수영(swim)과 날기(fly) 동작을 모두 가지고 있다. 하지만 Duck 클래스가 Animal, CanSwim, CanFly 클래스를 동시에 상속받는 것은 불가능하다.

따라서 타입스크립트에서는 클래스가 한 번에 여러 부모 클래스를 상속받는 것이 불가능하고, 단일 상속(single inheritance)만을 지원한다.