40 lines
No EOL
1.4 KiB
Text
40 lines
No EOL
1.4 KiB
Text
==== tests/cases/compiler/inheritedMembersAndIndexSignaturesFromDifferentBases.ts (6 errors) ====
|
|
// indexer in B is a subtype of indexer in A
|
|
interface A {
|
|
[s: string]: {
|
|
a;
|
|
};
|
|
}
|
|
interface B {
|
|
[s: number]: {
|
|
a;
|
|
b;
|
|
};
|
|
}
|
|
interface C {
|
|
m: {};
|
|
}
|
|
|
|
interface D extends A, B, C { } // error because m is not a subtype of {a;}
|
|
~
|
|
!!! Property 'm' of type '{}' is not assignable to string index type '{ a: any; }'.
|
|
|
|
interface E {
|
|
0: {};
|
|
}
|
|
|
|
interface F extends A, B, E { } // error because 0 is not a subtype of {a; b;}
|
|
~
|
|
!!! Property '0' of type '{}' is not assignable to numeric index type '{ a: any; b: any; }'.
|
|
~
|
|
!!! Property '0' of type '{}' is not assignable to string index type '{ a: any; }'.
|
|
|
|
interface G extends A, B, C, E { } // should only report one error
|
|
~
|
|
!!! Property '0' of type '{}' is not assignable to numeric index type '{ a: any; b: any; }'.
|
|
~
|
|
!!! Property '0' of type '{}' is not assignable to string index type '{ a: any; }'.
|
|
~
|
|
!!! Property 'm' of type '{}' is not assignable to string index type '{ a: any; }'.
|
|
|
|
interface H extends A, F { } // Should report no error at all because error is internal to F |