// indexer in B is a subtype of indexer in A interface A { [s: string]: { a; }; } interface B { [s: number]: { a; b; }; } interface C extends A, B { } // ok interface D { [s: number]: {}; } interface E extends A, D { } // error interface F extends A, D { [s: number]: { a; }; } // ok because we overrode D's number index signature