// derived class constructors must contain a super call class Base { x: string; } class Derived extends Base { constructor() { // error } } class Base2 { x: T; } class Derived2 extends Base2 { constructor() { // error for no super call (nested scopes don't count) var r2 = () => super(); // error for misplaced super call (nested function) } } class Derived3 extends Base2 { constructor() { // error var r = function () { super() } // error } } class Derived4 extends Base2 { constructor() { var r = super(); // ok } }