class C { foo: number bar(): T { return null; } } class D extends C implements C { baz() { } } var d: D = new D(); var r: string = d.foo; var r2: number = d.foo; var r3: string = d.bar(); var r4: number = d.bar();