tests/cases/compiler/typeMatch1.ts(18,1): error TS2322: Type 'D' is not assignable to type 'C'. Types have separate declarations of a private property 'x'. tests/cases/compiler/typeMatch1.ts(19,1): error TS2322: Type 'typeof C' is not assignable to type 'C'. Property 'x' is missing in type 'typeof C'. tests/cases/compiler/typeMatch1.ts(20,1): error TS2365: Operator '==' cannot be applied to types 'typeof C' and 'typeof D'. ==== tests/cases/compiler/typeMatch1.ts (3 errors) ==== interface I { z; } interface I2 { z; } var x1: { z: number; f(n: number): string; f(s: string): number; } var x2: { z:number;f:{(n:number):string;(s:string):number;}; } = x1; var i:I; var i2:I2; var x3:{ z; }= i; var x4:{ z; }= i2; var x5:I=i2; class C { private x; } class D { private x; } var x6=new C(); var x7=new D(); x6 = x7; ~~ !!! error TS2322: Type 'D' is not assignable to type 'C'. !!! error TS2322: Types have separate declarations of a private property 'x'. x6=C; ~~ !!! error TS2322: Type 'typeof C' is not assignable to type 'C'. !!! error TS2322: Property 'x' is missing in type 'typeof C'. C==D; ~~~~ !!! error TS2365: Operator '==' cannot be applied to types 'typeof C' and 'typeof D'. C==C;