interface I { y: string } interface I_ { x: number } interface J extends I, I_ { } interface K extends J { } var k: K = { x: "", y: "" }; // error: x should be number (k.x: string); // error: x is number (k.y: string); declare class C { x: number } declare class D extends C, Other { } // error: multiple extends //declare class E implements I { } // parse error interface A { y: Y } interface A_ { x: X } interface B extends A, A_ { z: Z } interface E extends B { } var e: E = { x: "", y: "", z: "" }; // error: x and z should be numbers (e.x: string); // error: x is number (e.y: string); (e.z: string); // error: z is number