TypeScript/tests/baselines/reference/numericIndexerConstrainsPropertyDeclarations.errors.txt

128 lines
3.8 KiB
Plaintext

==== tests/cases/conformance/types/objectTypeLiteral/indexSignatures/numericIndexerConstrainsPropertyDeclarations.ts (14 errors) ====
// String indexer types constrain the types of named properties in their containing type
interface MyNumber extends Number {
foo: number;
}
class C {
[x: number]: string;
constructor() { } // ok
a: string; // ok
b: number; // ok
c: () => {} // ok
"d": string; // ok
"e": number; // ok
1.0: string; // ok
2.0: number; // error
~~~~~~~~~~~~
!!! Property '2.0' of type 'number' is not assignable to numeric index type 'string'.
"3.0": string; // ok
"4.0": number; // error
~~~~~~~~~~~~~~
!!! Property '"4.0"' of type 'number' is not assignable to numeric index type 'string'.
3.0: MyNumber // error
~~~~~~~~~~~~~
!!! Property '3.0' of type 'MyNumber' is not assignable to numeric index type 'string'.
get X() { // ok
~
!!! Accessors are only available when targeting ECMAScript 5 and higher.
return '';
}
set X(v) { } // ok
~
!!! Accessors are only available when targeting ECMAScript 5 and higher.
foo() {
return '';
}
static sa: number; // ok
static sb: string; // ok
static foo() { } // ok
static get X() { // ok
~
!!! Accessors are only available when targeting ECMAScript 5 and higher.
return 1;
}
}
interface I {
[x: number]: string;
a: string; // ok
b: number; // ok
c: () => {} // ok
"d": string; // ok
"e": number; // ok
1.0: string; // ok
2.0: number; // error
~~~~~~~~~~~~
!!! Property '2.0' of type 'number' is not assignable to numeric index type 'string'.
(): string; // ok
(x): number // ok
foo(): string; // ok
"3.0": string; // ok
"4.0": number; // error
~~~~~~~~~~~~~~
!!! Property '"4.0"' of type 'number' is not assignable to numeric index type 'string'.
f: MyNumber; // error
}
var a: {
[x: number]: string;
a: string; // ok
b: number; // ok
c: () => {} // ok
"d": string; // ok
"e": number; // ok
1.0: string; // ok
2.0: number; // error
~~~~~~~~~~~~
!!! Property '2.0' of type 'number' is not assignable to numeric index type 'string'.
(): string; // ok
(x): number // ok
foo(): string; // ok
"3.0": string; // ok
"4.0": number; // error
~~~~~~~~~~~~~~
!!! Property '"4.0"' of type 'number' is not assignable to numeric index type 'string'.
f: MyNumber; // error
}
// error
var b: { [x: number]: string; } = {
~
!!! Type '{ [x: number]: {}; 1.0: string; 2.0: number; a: string; b: number; c: () => void; "d": string; "e": number; "3.0": string; "4.0": number; f: unknown; X: string; foo: () => string; }' is not assignable to type '{ [x: number]: string; }':
!!! Index signatures are incompatible:
!!! Type '{}' is not assignable to type 'string'.
a: '',
b: 1,
c: () => { },
"d": '',
"e": 1,
1.0: '',
2.0: 1,
"3.0": '',
"4.0": 1,
f: <Myn>null,
~~~
!!! Cannot find name 'Myn'.
get X() {
~
!!! Accessors are only available when targeting ECMAScript 5 and higher.
return '';
},
set X(v) { },
~
!!! Accessors are only available when targeting ECMAScript 5 and higher.
foo() {
return '';
}
}