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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy