tests/cases/compiler/interfaceImplementation1.ts(12,7): error TS2420: Class 'C1' incorrectly implements interface 'I1'. Property 'iObj' is private in type 'C1' but not in type 'I1'. tests/cases/compiler/interfaceImplementation1.ts(12,7): error TS2420: Class 'C1' incorrectly implements interface 'I2'. Property 'iFn' is private in type 'C1' but not in type 'I2'. tests/cases/compiler/interfaceImplementation1.ts(34,5): error TS2322: Type '() => C2' is not assignable to type 'I4'. ==== tests/cases/compiler/interfaceImplementation1.ts (3 errors) ==== interface I1 { iObj:{ }; iNum:number; iAny:any; iFn():void; } interface I2 { iFn(n:number, s:string):void; } class C1 implements I1,I2 { ~~ !!! error TS2420: Class 'C1' incorrectly implements interface 'I1'. !!! error TS2420: Property 'iObj' is private in type 'C1' but not in type 'I1'. ~~ !!! error TS2420: Class 'C1' incorrectly implements interface 'I2'. !!! error TS2420: Property 'iFn' is private in type 'C1' but not in type 'I2'. private iFn(); private iFn(n?:number, s?:string) { } private iAny:any; private iNum:number; private iObj:{ }; } interface I3 { x: number; } interface I4 { ():I3; new ():I3; [call:number]:string; } class C2 implements I3 { public x = 1; } var a:I4 = function(){ ~ !!! error TS2322: Type '() => C2' is not assignable to type 'I4'. return new C2(); } new a(); /*var b:I4 = C2; new b(); */ var c:I4; c[5]; c["foo"];