Skip to content

Commit 837df49

Browse files
authored
Merge pull request microsoft#25374 from Microsoft/SetMapConstructor
Consolidate overloads in constructors for Map, Set, WeakMap, and WeakSet
2 parents 956f9d0 + 4dd1f9f commit 837df49

6 files changed

Lines changed: 118 additions & 9 deletions

File tree

src/lib/es2015.collection.d.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,7 @@ interface Map<K, V> {
99
}
1010

1111
interface MapConstructor {
12-
new (): Map<any, any>;
13-
new <K, V>(entries?: ReadonlyArray<[K, V]> | null): Map<K, V>;
12+
new <K = any, V = any>(entries?: ReadonlyArray<[K, V]> | null): Map<K, V>;
1413
readonly prototype: Map<any, any>;
1514
}
1615
declare var Map: MapConstructor;
@@ -45,8 +44,7 @@ interface Set<T> {
4544
}
4645

4746
interface SetConstructor {
48-
new (): Set<any>;
49-
new <T>(values?: ReadonlyArray<T> | null): Set<T>;
47+
new <T = any>(values?: ReadonlyArray<T> | null): Set<T>;
5048
readonly prototype: Set<any>;
5149
}
5250
declare var Set: SetConstructor;
@@ -64,8 +62,7 @@ interface WeakSet<T extends object> {
6462
}
6563

6664
interface WeakSetConstructor {
67-
new (): WeakSet<object>;
68-
new <T extends object>(values?: ReadonlyArray<T> | null): WeakSet<T>;
65+
new <T extends object = object>(values?: ReadonlyArray<T> | null): WeakSet<T>;
6966
readonly prototype: WeakSet<object>;
7067
}
7168
declare var WeakSet: WeakSetConstructor;

src/lib/es2015.iterable.d.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ interface MapConstructor {
135135
interface WeakMap<K extends object, V> { }
136136

137137
interface WeakMapConstructor {
138-
new <K extends object, V>(iterable: Iterable<[K, V]>): WeakMap<K, V>;
138+
new <K extends object = object, V = any>(iterable: Iterable<[K, V]>): WeakMap<K, V>;
139139
}
140140

141141
interface Set<T> {
@@ -183,7 +183,7 @@ interface SetConstructor {
183183
interface WeakSet<T extends object> { }
184184

185185
interface WeakSetConstructor {
186-
new <T extends object>(iterable: Iterable<T>): WeakSet<T>;
186+
new <T extends object = object>(iterable: Iterable<T>): WeakSet<T>;
187187
}
188188

189189
interface Promise<T> { }

tests/baselines/reference/ES5For-ofTypeCheck13.types

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
const strSet: Set<string> = new Set()
33
>strSet : Set<string>
44
>Set : Set<T>
5-
>new Set() : Set<any>
5+
>new Set() : Set<string>
66
>Set : SetConstructor
77

88
strSet.add('Hello')
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
=== tests/cases/compiler/extendingSetWithCheckJs.ts ===
2+
class MySet extends Set {
3+
>MySet : Symbol(MySet, Decl(extendingSetWithCheckJs.ts, 0, 0))
4+
>Set : Symbol(Set, Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --))
5+
6+
constructor() {
7+
super();
8+
>super : Symbol(SetConstructor, Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --))
9+
}
10+
}
11+
12+
class MyWeakSet extends WeakSet {
13+
>MyWeakSet : Symbol(MyWeakSet, Decl(extendingSetWithCheckJs.ts, 4, 1))
14+
>WeakSet : Symbol(WeakSet, Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --))
15+
16+
constructor() {
17+
super();
18+
>super : Symbol(WeakSetConstructor, Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
19+
}
20+
}
21+
22+
class MyMap extends Map {
23+
>MyMap : Symbol(MyMap, Decl(extendingSetWithCheckJs.ts, 10, 1))
24+
>Map : Symbol(Map, Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --))
25+
26+
constructor() {
27+
super();
28+
>super : Symbol(MapConstructor, Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --))
29+
}
30+
}
31+
32+
class MyWeakMap extends WeakMap {
33+
>MyWeakMap : Symbol(MyWeakMap, Decl(extendingSetWithCheckJs.ts, 16, 1))
34+
>WeakMap : Symbol(WeakMap, Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --))
35+
36+
constructor() {
37+
super();
38+
>super : Symbol(WeakMapConstructor, Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
39+
}
40+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
=== tests/cases/compiler/extendingSetWithCheckJs.ts ===
2+
class MySet extends Set {
3+
>MySet : MySet
4+
>Set : Set<any>
5+
6+
constructor() {
7+
super();
8+
>super() : void
9+
>super : SetConstructor
10+
}
11+
}
12+
13+
class MyWeakSet extends WeakSet {
14+
>MyWeakSet : MyWeakSet
15+
>WeakSet : WeakSet<object>
16+
17+
constructor() {
18+
super();
19+
>super() : void
20+
>super : WeakSetConstructor
21+
}
22+
}
23+
24+
class MyMap extends Map {
25+
>MyMap : MyMap
26+
>Map : Map<any, any>
27+
28+
constructor() {
29+
super();
30+
>super() : void
31+
>super : MapConstructor
32+
}
33+
}
34+
35+
class MyWeakMap extends WeakMap {
36+
>MyWeakMap : MyWeakMap
37+
>WeakMap : WeakMap<object, any>
38+
39+
constructor() {
40+
super();
41+
>super() : void
42+
>super : WeakMapConstructor
43+
}
44+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
// @allowJs: true
2+
// @checkJs: true
3+
// @noEmit: true
4+
// @lib: es2017
5+
6+
class MySet extends Set {
7+
constructor() {
8+
super();
9+
}
10+
}
11+
12+
class MyWeakSet extends WeakSet {
13+
constructor() {
14+
super();
15+
}
16+
}
17+
18+
class MyMap extends Map {
19+
constructor() {
20+
super();
21+
}
22+
}
23+
24+
class MyWeakMap extends WeakMap {
25+
constructor() {
26+
super();
27+
}
28+
}

0 commit comments

Comments
 (0)