=== tests/cases/conformance/interfaces/declarationMerging/mergedInterfacesWithMultipleBases2.ts === // merged interfaces behave as if all extends clauses from each declaration are merged together // no errors expected class C { >C : C a: number; >a : number } class C2 { >C2 : C2 b: number; >b : number } class C3 { >C3 : C3 c: string; >c : string } class C4 { >C4 : C4 d: string; >d : string } interface A extends C, C3 { >A : A >C : C >C3 : C3 y: string; >y : string } interface A extends C2, C4 { >A : A >C2 : C2 >C4 : C4 z: string; >z : string } class D implements A { >D : D >A : A a: number; >a : number b: number; >b : number c: string; >c : string d: string; >d : string y: string; >y : string z: string; >z : string } var a: A; >a : A >A : A var r = a.a; >r : number >a.a : number >a : A >a : number // generic interfaces in a module module M { >M : typeof M class C { >C : C >T : T a: T; >a : T >T : T } class C2 { >C2 : C2 >T : T b: T; >b : T >T : T } class C3 { >C3 : C3 >T : T c: T; >c : T >T : T } class C4 { >C4 : C4 >T : T d: T; >d : T >T : T } interface A extends C, C3 { >A : A >T : T >C : C >T : T >C3 : C3 >T : T y: T; >y : T >T : T } interface A extends C2, C4 { >A : A >T : T >C2 : C2 >C4 : C4 z: T; >z : T >T : T } class D implements A { >D : D >A : A a: boolean; >a : boolean b: string; >b : string c: boolean; >c : boolean d: string; >d : string y: boolean; >y : boolean z: boolean; >z : boolean } }