tests/cases/conformance/interfaces/interfacesExtendingClasses/implementingAnInterfaceExtendingClassWithPrivates2.ts(13,7): error TS2415: Class 'Bar2' incorrectly extends base class 'Foo'. Property 'x' is private in type 'Foo' but not in type 'Bar2'. tests/cases/conformance/interfaces/interfacesExtendingClasses/implementingAnInterfaceExtendingClassWithPrivates2.ts(13,7): error TS2420: Class 'Bar2' incorrectly implements interface 'I'. Property 'x' is private in type 'I' but not in type 'Bar2'. tests/cases/conformance/interfaces/interfacesExtendingClasses/implementingAnInterfaceExtendingClassWithPrivates2.ts(18,7): error TS2415: Class 'Bar3' incorrectly extends base class 'Foo'. Types have separate declarations of a private property 'x'. tests/cases/conformance/interfaces/interfacesExtendingClasses/implementingAnInterfaceExtendingClassWithPrivates2.ts(18,7): error TS2420: Class 'Bar3' incorrectly implements interface 'I'. Types have separate declarations of a private property 'x'. tests/cases/conformance/interfaces/interfacesExtendingClasses/implementingAnInterfaceExtendingClassWithPrivates2.ts(42,11): error TS2415: Class 'Bar2' incorrectly extends base class 'Foo'. Property 'x' is private in type 'Foo' but not in type 'Bar2'. tests/cases/conformance/interfaces/interfacesExtendingClasses/implementingAnInterfaceExtendingClassWithPrivates2.ts(42,11): error TS2420: Class 'Bar2' incorrectly implements interface 'I'. Property 'z' is missing in type 'Bar2'. tests/cases/conformance/interfaces/interfacesExtendingClasses/implementingAnInterfaceExtendingClassWithPrivates2.ts(47,11): error TS2415: Class 'Bar3' incorrectly extends base class 'Foo'. Types have separate declarations of a private property 'x'. tests/cases/conformance/interfaces/interfacesExtendingClasses/implementingAnInterfaceExtendingClassWithPrivates2.ts(47,11): error TS2420: Class 'Bar3' incorrectly implements interface 'I'. Property 'z' is missing in type 'Bar3'. tests/cases/conformance/interfaces/interfacesExtendingClasses/implementingAnInterfaceExtendingClassWithPrivates2.ts(67,11): error TS2420: Class 'Bar' incorrectly implements interface 'I'. Property 'y' is missing in type 'Bar'. tests/cases/conformance/interfaces/interfacesExtendingClasses/implementingAnInterfaceExtendingClassWithPrivates2.ts(73,14): error TS2341: Property 'x' is private and only accessible within class 'Foo'. tests/cases/conformance/interfaces/interfacesExtendingClasses/implementingAnInterfaceExtendingClassWithPrivates2.ts(74,16): error TS2339: Property 'y' does not exist on type 'Bar'. tests/cases/conformance/interfaces/interfacesExtendingClasses/implementingAnInterfaceExtendingClassWithPrivates2.ts(76,11): error TS2415: Class 'Bar2' incorrectly extends base class 'Foo'. Property 'x' is private in type 'Foo' but not in type 'Bar2'. tests/cases/conformance/interfaces/interfacesExtendingClasses/implementingAnInterfaceExtendingClassWithPrivates2.ts(76,11): error TS2420: Class 'Bar2' incorrectly implements interface 'I'. Property 'y' is missing in type 'Bar2'. tests/cases/conformance/interfaces/interfacesExtendingClasses/implementingAnInterfaceExtendingClassWithPrivates2.ts(81,11): error TS2415: Class 'Bar3' incorrectly extends base class 'Foo'. Types have separate declarations of a private property 'x'. tests/cases/conformance/interfaces/interfacesExtendingClasses/implementingAnInterfaceExtendingClassWithPrivates2.ts(81,11): error TS2420: Class 'Bar3' incorrectly implements interface 'I'. Property 'y' is missing in type 'Bar3'. ==== tests/cases/conformance/interfaces/interfacesExtendingClasses/implementingAnInterfaceExtendingClassWithPrivates2.ts (15 errors) ==== class Foo { private x: string; } interface I extends Foo { y: number; } class Bar extends Foo implements I { // ok y: number; } class Bar2 extends Foo implements I { // error ~~~~ !!! error TS2415: Class 'Bar2' incorrectly extends base class 'Foo'. !!! error TS2415: Property 'x' is private in type 'Foo' but not in type 'Bar2'. ~~~~ !!! error TS2420: Class 'Bar2' incorrectly implements interface 'I'. !!! error TS2420: Property 'x' is private in type 'I' but not in type 'Bar2'. x: string; y: number; } class Bar3 extends Foo implements I { // error ~~~~ !!! error TS2415: Class 'Bar3' incorrectly extends base class 'Foo'. !!! error TS2415: Types have separate declarations of a private property 'x'. ~~~~ !!! error TS2420: Class 'Bar3' incorrectly implements interface 'I'. !!! error TS2420: Types have separate declarations of a private property 'x'. private x: string; y: number; } // another level of indirection module M { class Foo { private x: string; } class Baz extends Foo { z: number; } interface I extends Baz { y: number; } class Bar extends Foo implements I { // ok y: number; z: number; } class Bar2 extends Foo implements I { // error ~~~~ !!! error TS2415: Class 'Bar2' incorrectly extends base class 'Foo'. !!! error TS2415: Property 'x' is private in type 'Foo' but not in type 'Bar2'. ~~~~ !!! error TS2420: Class 'Bar2' incorrectly implements interface 'I'. !!! error TS2420: Property 'z' is missing in type 'Bar2'. x: string; y: number; } class Bar3 extends Foo implements I { // error ~~~~ !!! error TS2415: Class 'Bar3' incorrectly extends base class 'Foo'. !!! error TS2415: Types have separate declarations of a private property 'x'. ~~~~ !!! error TS2420: Class 'Bar3' incorrectly implements interface 'I'. !!! error TS2420: Property 'z' is missing in type 'Bar3'. private x: string; y: number; } } // two levels of privates module M2 { class Foo { private x: string; } class Baz extends Foo { private y: number; } interface I extends Baz { z: number; } class Bar extends Foo implements I { // error ~~~ !!! error TS2420: Class 'Bar' incorrectly implements interface 'I'. !!! error TS2420: Property 'y' is missing in type 'Bar'. z: number; } var b: Bar; var r1 = b.z; var r2 = b.x; // error ~~~ !!! error TS2341: Property 'x' is private and only accessible within class 'Foo'. var r3 = b.y; // error ~ !!! error TS2339: Property 'y' does not exist on type 'Bar'. class Bar2 extends Foo implements I { // error ~~~~ !!! error TS2415: Class 'Bar2' incorrectly extends base class 'Foo'. !!! error TS2415: Property 'x' is private in type 'Foo' but not in type 'Bar2'. ~~~~ !!! error TS2420: Class 'Bar2' incorrectly implements interface 'I'. !!! error TS2420: Property 'y' is missing in type 'Bar2'. x: string; z: number; } class Bar3 extends Foo implements I { // error ~~~~ !!! error TS2415: Class 'Bar3' incorrectly extends base class 'Foo'. !!! error TS2415: Types have separate declarations of a private property 'x'. ~~~~ !!! error TS2420: Class 'Bar3' incorrectly implements interface 'I'. !!! error TS2420: Property 'y' is missing in type 'Bar3'. private x: string; z: number; } }