189 lines
No EOL
12 KiB
Text
189 lines
No EOL
12 KiB
Text
tests/cases/conformance/types/objectTypeLiteral/indexSignatures/stringIndexerConstrainsPropertyDeclarations.ts(23,9): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
|
|
tests/cases/conformance/types/objectTypeLiteral/indexSignatures/stringIndexerConstrainsPropertyDeclarations.ts(26,9): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
|
|
tests/cases/conformance/types/objectTypeLiteral/indexSignatures/stringIndexerConstrainsPropertyDeclarations.ts(36,16): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
|
|
tests/cases/conformance/types/objectTypeLiteral/indexSignatures/stringIndexerConstrainsPropertyDeclarations.ts(90,9): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
|
|
tests/cases/conformance/types/objectTypeLiteral/indexSignatures/stringIndexerConstrainsPropertyDeclarations.ts(93,9): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
|
|
tests/cases/conformance/types/objectTypeLiteral/indexSignatures/stringIndexerConstrainsPropertyDeclarations.ts(13,5): error TS2411: Property 'b' of type 'number' is not assignable to string index type 'string'.
|
|
tests/cases/conformance/types/objectTypeLiteral/indexSignatures/stringIndexerConstrainsPropertyDeclarations.ts(14,5): error TS2411: Property 'c' of type '() => {}' is not assignable to string index type 'string'.
|
|
tests/cases/conformance/types/objectTypeLiteral/indexSignatures/stringIndexerConstrainsPropertyDeclarations.ts(16,5): error TS2411: Property '"e"' of type 'number' is not assignable to string index type 'string'.
|
|
tests/cases/conformance/types/objectTypeLiteral/indexSignatures/stringIndexerConstrainsPropertyDeclarations.ts(18,5): error TS2411: Property '2.0' of type 'number' is not assignable to string index type 'string'.
|
|
tests/cases/conformance/types/objectTypeLiteral/indexSignatures/stringIndexerConstrainsPropertyDeclarations.ts(20,5): error TS2411: Property '"4.0"' of type 'number' is not assignable to string index type 'string'.
|
|
tests/cases/conformance/types/objectTypeLiteral/indexSignatures/stringIndexerConstrainsPropertyDeclarations.ts(21,5): error TS2411: Property 'f' of type 'MyString' is not assignable to string index type 'string'.
|
|
tests/cases/conformance/types/objectTypeLiteral/indexSignatures/stringIndexerConstrainsPropertyDeclarations.ts(28,5): error TS2411: Property 'foo' of type '() => string' is not assignable to string index type 'string'.
|
|
tests/cases/conformance/types/objectTypeLiteral/indexSignatures/stringIndexerConstrainsPropertyDeclarations.ts(45,5): error TS2411: Property 'b' of type 'number' is not assignable to string index type 'string'.
|
|
tests/cases/conformance/types/objectTypeLiteral/indexSignatures/stringIndexerConstrainsPropertyDeclarations.ts(46,5): error TS2411: Property 'c' of type '() => {}' is not assignable to string index type 'string'.
|
|
tests/cases/conformance/types/objectTypeLiteral/indexSignatures/stringIndexerConstrainsPropertyDeclarations.ts(48,5): error TS2411: Property '"e"' of type 'number' is not assignable to string index type 'string'.
|
|
tests/cases/conformance/types/objectTypeLiteral/indexSignatures/stringIndexerConstrainsPropertyDeclarations.ts(50,5): error TS2411: Property '2.0' of type 'number' is not assignable to string index type 'string'.
|
|
tests/cases/conformance/types/objectTypeLiteral/indexSignatures/stringIndexerConstrainsPropertyDeclarations.ts(53,5): error TS2411: Property 'foo' of type '() => string' is not assignable to string index type 'string'.
|
|
tests/cases/conformance/types/objectTypeLiteral/indexSignatures/stringIndexerConstrainsPropertyDeclarations.ts(55,5): error TS2411: Property '"4.0"' of type 'number' is not assignable to string index type 'string'.
|
|
tests/cases/conformance/types/objectTypeLiteral/indexSignatures/stringIndexerConstrainsPropertyDeclarations.ts(56,5): error TS2411: Property 'f' of type 'MyString' is not assignable to string index type 'string'.
|
|
tests/cases/conformance/types/objectTypeLiteral/indexSignatures/stringIndexerConstrainsPropertyDeclarations.ts(63,5): error TS2411: Property 'b' of type 'number' is not assignable to string index type 'string'.
|
|
tests/cases/conformance/types/objectTypeLiteral/indexSignatures/stringIndexerConstrainsPropertyDeclarations.ts(64,5): error TS2411: Property 'c' of type '() => {}' is not assignable to string index type 'string'.
|
|
tests/cases/conformance/types/objectTypeLiteral/indexSignatures/stringIndexerConstrainsPropertyDeclarations.ts(66,5): error TS2411: Property '"e"' of type 'number' is not assignable to string index type 'string'.
|
|
tests/cases/conformance/types/objectTypeLiteral/indexSignatures/stringIndexerConstrainsPropertyDeclarations.ts(68,5): error TS2411: Property '2.0' of type 'number' is not assignable to string index type 'string'.
|
|
tests/cases/conformance/types/objectTypeLiteral/indexSignatures/stringIndexerConstrainsPropertyDeclarations.ts(71,5): error TS2411: Property 'foo' of type '() => string' is not assignable to string index type 'string'.
|
|
tests/cases/conformance/types/objectTypeLiteral/indexSignatures/stringIndexerConstrainsPropertyDeclarations.ts(73,5): error TS2411: Property '"4.0"' of type 'number' is not assignable to string index type 'string'.
|
|
tests/cases/conformance/types/objectTypeLiteral/indexSignatures/stringIndexerConstrainsPropertyDeclarations.ts(74,5): error TS2411: Property 'f' of type 'MyString' is not assignable to string index type 'string'.
|
|
tests/cases/conformance/types/objectTypeLiteral/indexSignatures/stringIndexerConstrainsPropertyDeclarations.ts(78,5): error TS2323: Type '{ [x: string]: string | number | MyString | (() => void); 1.0: string; 2.0: number; a: string; b: number; c: () => void; "d": string; "e": number; "3.0": string; "4.0": number; f: MyString; X: string; foo: () => string; }' is not assignable to type '{ [x: string]: string; }'.
|
|
Index signatures are incompatible.
|
|
Type 'string | number | MyString | (() => void)' is not assignable to type 'string'.
|
|
Type 'number' is not assignable to type 'string'.
|
|
|
|
|
|
==== tests/cases/conformance/types/objectTypeLiteral/indexSignatures/stringIndexerConstrainsPropertyDeclarations.ts (27 errors) ====
|
|
// String indexer types constrain the types of named properties in their containing type
|
|
|
|
interface MyString extends String {
|
|
foo: number;
|
|
}
|
|
|
|
class C {
|
|
[x: string]: string;
|
|
|
|
constructor() { } // ok
|
|
|
|
a: string; // ok
|
|
b: number; // error
|
|
~~~~~~~~~~
|
|
!!! error TS2411: Property 'b' of type 'number' is not assignable to string index type 'string'.
|
|
c: () => {} // error
|
|
~~~~~~~~~~~
|
|
!!! error TS2411: Property 'c' of type '() => {}' is not assignable to string index type 'string'.
|
|
"d": string; // ok
|
|
"e": number; // error
|
|
~~~~~~~~~~~~
|
|
!!! error TS2411: Property '"e"' of type 'number' is not assignable to string index type 'string'.
|
|
1.0: string; // ok
|
|
2.0: number; // error
|
|
~~~~~~~~~~~~
|
|
!!! error TS2411: Property '2.0' of type 'number' is not assignable to string index type 'string'.
|
|
"3.0": string; // ok
|
|
"4.0": number; // error
|
|
~~~~~~~~~~~~~~
|
|
!!! error TS2411: Property '"4.0"' of type 'number' is not assignable to string index type 'string'.
|
|
f: MyString; // error
|
|
~~~~~~~~~~~~
|
|
!!! error TS2411: Property 'f' of type 'MyString' is not assignable to string index type 'string'.
|
|
|
|
get X() { // ok
|
|
~
|
|
!!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
|
|
return '';
|
|
}
|
|
set X(v) { } // ok
|
|
~
|
|
!!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
|
|
|
|
foo() { // error
|
|
~~~~~~~~~~~~~~~~
|
|
return '';
|
|
~~~~~~~~~~~~~~~~~~
|
|
}
|
|
~~~~~
|
|
!!! error TS2411: Property 'foo' of type '() => string' is not assignable to string index type 'string'.
|
|
|
|
static sa: number; // ok
|
|
static sb: string; // ok
|
|
|
|
static foo() { } // ok
|
|
static get X() { // ok
|
|
~
|
|
!!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
interface I {
|
|
[x: string]: string;
|
|
|
|
a: string; // ok
|
|
b: number; // error
|
|
~~~~~~~~~~
|
|
!!! error TS2411: Property 'b' of type 'number' is not assignable to string index type 'string'.
|
|
c: () => {} // error
|
|
~~~~~~~~~~~
|
|
!!! error TS2411: Property 'c' of type '() => {}' is not assignable to string index type 'string'.
|
|
"d": string; // ok
|
|
"e": number; // error
|
|
~~~~~~~~~~~~
|
|
!!! error TS2411: Property '"e"' of type 'number' is not assignable to string index type 'string'.
|
|
1.0: string; // ok
|
|
2.0: number; // error
|
|
~~~~~~~~~~~~
|
|
!!! error TS2411: Property '2.0' of type 'number' is not assignable to string index type 'string'.
|
|
(): string; // ok
|
|
(x): number // ok
|
|
foo(): string; // error
|
|
~~~~~~~~~~~~~~
|
|
!!! error TS2411: Property 'foo' of type '() => string' is not assignable to string index type 'string'.
|
|
"3.0": string; // ok
|
|
"4.0": number; // error
|
|
~~~~~~~~~~~~~~
|
|
!!! error TS2411: Property '"4.0"' of type 'number' is not assignable to string index type 'string'.
|
|
f: MyString; // error
|
|
~~~~~~~~~~~~
|
|
!!! error TS2411: Property 'f' of type 'MyString' is not assignable to string index type 'string'.
|
|
}
|
|
|
|
var a: {
|
|
[x: string]: string;
|
|
|
|
a: string; // ok
|
|
b: number; // error
|
|
~~~~~~~~~~
|
|
!!! error TS2411: Property 'b' of type 'number' is not assignable to string index type 'string'.
|
|
c: () => {} // error
|
|
~~~~~~~~~~~
|
|
!!! error TS2411: Property 'c' of type '() => {}' is not assignable to string index type 'string'.
|
|
"d": string; // ok
|
|
"e": number; // error
|
|
~~~~~~~~~~~~
|
|
!!! error TS2411: Property '"e"' of type 'number' is not assignable to string index type 'string'.
|
|
1.0: string; // ok
|
|
2.0: number; // error
|
|
~~~~~~~~~~~~
|
|
!!! error TS2411: Property '2.0' of type 'number' is not assignable to string index type 'string'.
|
|
(): string; // ok
|
|
(x): number // ok
|
|
foo(): string; // error
|
|
~~~~~~~~~~~~~~
|
|
!!! error TS2411: Property 'foo' of type '() => string' is not assignable to string index type 'string'.
|
|
"3.0": string; // ok
|
|
"4.0": number; // error
|
|
~~~~~~~~~~~~~~
|
|
!!! error TS2411: Property '"4.0"' of type 'number' is not assignable to string index type 'string'.
|
|
f: MyString; // error
|
|
~~~~~~~~~~~~
|
|
!!! error TS2411: Property 'f' of type 'MyString' is not assignable to string index type 'string'.
|
|
}
|
|
|
|
// error
|
|
var b: { [x: string]: string; } = {
|
|
~
|
|
!!! error TS2323: Type '{ [x: string]: string | number | MyString | (() => void); 1.0: string; 2.0: number; a: string; b: number; c: () => void; "d": string; "e": number; "3.0": string; "4.0": number; f: MyString; X: string; foo: () => string; }' is not assignable to type '{ [x: string]: string; }'.
|
|
!!! error TS2323: Index signatures are incompatible.
|
|
!!! error TS2323: Type 'string | number | MyString | (() => void)' is not assignable to type 'string'.
|
|
!!! error TS2323: Type 'number' is not assignable to type 'string'.
|
|
a: '',
|
|
b: 1,
|
|
c: () => { },
|
|
"d": '',
|
|
"e": 1,
|
|
1.0: '',
|
|
2.0: 1,
|
|
"3.0": '',
|
|
"4.0": 1,
|
|
f: <MyString>null,
|
|
|
|
get X() {
|
|
~
|
|
!!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
|
|
return '';
|
|
},
|
|
set X(v) { },
|
|
~
|
|
!!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
|
|
foo() {
|
|
return '';
|
|
}
|
|
} |