Skip to content

Commit a8633ee

Browse files
committed
Merge pull request #7029 from Microsoft/implicitIndexSignatures
Implicit index signatures
2 parents 3820dfa + a1040f0 commit a8633ee

File tree

129 files changed

+1048
-502
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

129 files changed

+1048
-502
lines changed

src/compiler/checker.ts

Lines changed: 112 additions & 99 deletions
Large diffs are not rendered by default.

src/compiler/diagnosticMessages.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1703,6 +1703,10 @@
17031703
"category": "Error",
17041704
"code": 2529
17051705
},
1706+
"Property '{0}' is incompatible with index signature.": {
1707+
"category": "Error",
1708+
"code": 2530
1709+
},
17061710
"JSX element attributes type '{0}' may not be a union type.": {
17071711
"category": "Error",
17081712
"code": 2600

tests/baselines/reference/augmentedTypeAssignmentCompatIndexSignature.errors.txt

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
1-
tests/cases/conformance/types/members/augmentedTypeAssignmentCompatIndexSignature.ts(15,5): error TS2322: Type '{}' is not assignable to type '{ [n: number]: Foo; }'.
2-
Index signature is missing in type '{}'.
31
tests/cases/conformance/types/members/augmentedTypeAssignmentCompatIndexSignature.ts(19,5): error TS2322: Type '() => void' is not assignable to type '{ [n: number]: Bar; }'.
42
Index signature is missing in type '() => void'.
53

64

7-
==== tests/cases/conformance/types/members/augmentedTypeAssignmentCompatIndexSignature.ts (2 errors) ====
5+
==== tests/cases/conformance/types/members/augmentedTypeAssignmentCompatIndexSignature.ts (1 errors) ====
86
interface Foo { a }
97
interface Bar { b }
108

@@ -20,9 +18,6 @@ tests/cases/conformance/types/members/augmentedTypeAssignmentCompatIndexSignatur
2018
var f = () => { };
2119

2220
var v1: {
23-
~~
24-
!!! error TS2322: Type '{}' is not assignable to type '{ [n: number]: Foo; }'.
25-
!!! error TS2322: Index signature is missing in type '{}'.
2621
[n: number]: Foo
2722
} = o; // Should be allowed
2823

tests/baselines/reference/badOverloadError.types

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@ function method() {
66
>dictionary : { [index: string]: string; }
77
><{ [index: string]: string; }>{} : { [index: string]: string; }
88
>index : string
9-
>{} : { [x: string]: undefined; }
9+
>{} : {}
1010
}
1111

tests/baselines/reference/bestCommonTypeWithContextualTyping.types

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ var obj: { [s: string]: Contextual } = { s: e }; // { s: Ellement; [s: string]:
3636
>obj : { [s: string]: Contextual; }
3737
>s : string
3838
>Contextual : Contextual
39-
>{ s: e } : { [x: string]: Ellement; s: Ellement; }
39+
>{ s: e } : { s: Ellement; }
4040
>s : Ellement
4141
>e : Ellement
4242

tests/baselines/reference/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.errors.txt

Lines changed: 2 additions & 50 deletions
Large diffs are not rendered by default.

tests/baselines/reference/compoundAdditionAssignmentLHSCanBeAssigned.types

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ x2 += E.a;
9898
x2 += {};
9999
>x2 += {} : string
100100
>x2 : string
101-
>{} : { [x: number]: undefined; }
101+
>{} : {}
102102

103103
x2 += null;
104104
>x2 += null : string

tests/baselines/reference/computedPropertyNames10_ES5.types

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ var a: any;
99
>a : any
1010

1111
var v = {
12-
>v : { [0](): void; [""](): void; }
13-
>{ [s]() { }, [n]() { }, [s + s]() { }, [s + n]() { }, [+s]() { }, [""]() { }, [0]() { }, [a]() { }, [<any>true]() { }, [`hello bye`]() { }, [`hello ${a} bye`]() { }} : { [0](): void; [""](): void; }
12+
>v : { [x: string]: () => void; [x: number]: () => void; [0](): void; [""](): void; }
13+
>{ [s]() { }, [n]() { }, [s + s]() { }, [s + n]() { }, [+s]() { }, [""]() { }, [0]() { }, [a]() { }, [<any>true]() { }, [`hello bye`]() { }, [`hello ${a} bye`]() { }} : { [x: string]: () => void; [x: number]: () => void; [0](): void; [""](): void; }
1414

1515
[s]() { },
1616
>s : string

tests/baselines/reference/computedPropertyNames10_ES6.types

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ var a: any;
99
>a : any
1010

1111
var v = {
12-
>v : { [0](): void; [""](): void; }
13-
>{ [s]() { }, [n]() { }, [s + s]() { }, [s + n]() { }, [+s]() { }, [""]() { }, [0]() { }, [a]() { }, [<any>true]() { }, [`hello bye`]() { }, [`hello ${a} bye`]() { }} : { [0](): void; [""](): void; }
12+
>v : { [x: string]: () => void; [x: number]: () => void; [0](): void; [""](): void; }
13+
>{ [s]() { }, [n]() { }, [s + s]() { }, [s + n]() { }, [+s]() { }, [""]() { }, [0]() { }, [a]() { }, [<any>true]() { }, [`hello bye`]() { }, [`hello ${a} bye`]() { }} : { [x: string]: () => void; [x: number]: () => void; [0](): void; [""](): void; }
1414

1515
[s]() { },
1616
>s : string

tests/baselines/reference/computedPropertyNames11_ES5.types

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ var a: any;
99
>a : any
1010

1111
var v = {
12-
>v : { readonly [0]: number; [""]: any; }
13-
>{ get [s]() { return 0; }, set [n](v) { }, get [s + s]() { return 0; }, set [s + n](v) { }, get [+s]() { return 0; }, set [""](v) { }, get [0]() { return 0; }, set [a](v) { }, get [<any>true]() { return 0; }, set [`hello bye`](v) { }, get [`hello ${a} bye`]() { return 0; }} : { readonly [0]: number; [""]: any; }
12+
>v : { [x: string]: any; [x: number]: any; readonly [0]: number; [""]: any; }
13+
>{ get [s]() { return 0; }, set [n](v) { }, get [s + s]() { return 0; }, set [s + n](v) { }, get [+s]() { return 0; }, set [""](v) { }, get [0]() { return 0; }, set [a](v) { }, get [<any>true]() { return 0; }, set [`hello bye`](v) { }, get [`hello ${a} bye`]() { return 0; }} : { [x: string]: any; [x: number]: any; readonly [0]: number; [""]: any; }
1414

1515
get [s]() { return 0; },
1616
>s : string

0 commit comments

Comments
 (0)