class Base { a = 1; constructor(x: number) { this.a = x; } } class Derived extends Base { x = 1 y = 'hello'; } var r = new Derived(); // error var r2 = new Derived(1); class Base2 { a: T; constructor(x: T) { this.a = x; } } class D extends Base2 { x = 2 y: T = null; } var d = new D(); // error var d2 = new D(new Date()); // ok