슈퍼클래스의 생성자는 서브클래스의 생성자에서 자동 호출되지 않는다. 따라서 서브클래스의 생성자에선 반드시 super 키워드를 사용해 슈퍼클래스의 생성자를 호출해줘야 한다.
classBase { baseProp:number;constructor() {this.baseProp =123; }}classExtendedextendsBase { extendedProp:number;constructor() {super(); // 반드시 이 호출을 직접 해 주어야 한.this.extendedProp =456; }}constextended:Extended=newExtended();console.log(extended.baseProp); // 123console.log(extended.extendedProp); // 456
만약 서브클래스 생성자에서 슈퍼클래스 생성자의 호출을 빠트릴 경우 에러가 발생한다.
classExtendedWithoutSuperextendsBase {constructor() { }} // error TS2377: Constructors for derived classesmust contain a 'super' call.