mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-04 21:53:42 -06:00
Consolidate overloads in constructors for Map, Set, WeakMap, and WeakSet
Fixes https://github.com/Microsoft/TypeScript/issues/23551 Fixes https://github.com/Microsoft/TypeScript/issues/25362
This commit is contained in:
parent
7dc66e916a
commit
4dd1f9fc7c
9
src/lib/es2015.collection.d.ts
vendored
9
src/lib/es2015.collection.d.ts
vendored
@ -9,8 +9,7 @@ interface Map<K, V> {
|
||||
}
|
||||
|
||||
interface MapConstructor {
|
||||
new (): Map<any, any>;
|
||||
new <K, V>(entries?: ReadonlyArray<[K, V]> | null): Map<K, V>;
|
||||
new <K = any, V = any>(entries?: ReadonlyArray<[K, V]> | null): Map<K, V>;
|
||||
readonly prototype: Map<any, any>;
|
||||
}
|
||||
declare var Map: MapConstructor;
|
||||
@ -45,8 +44,7 @@ interface Set<T> {
|
||||
}
|
||||
|
||||
interface SetConstructor {
|
||||
new (): Set<any>;
|
||||
new <T>(values?: ReadonlyArray<T> | null): Set<T>;
|
||||
new <T = any>(values?: ReadonlyArray<T> | null): Set<T>;
|
||||
readonly prototype: Set<any>;
|
||||
}
|
||||
declare var Set: SetConstructor;
|
||||
@ -64,8 +62,7 @@ interface WeakSet<T extends object> {
|
||||
}
|
||||
|
||||
interface WeakSetConstructor {
|
||||
new (): WeakSet<object>;
|
||||
new <T extends object>(values?: ReadonlyArray<T> | null): WeakSet<T>;
|
||||
new <T extends object = object>(values?: ReadonlyArray<T> | null): WeakSet<T>;
|
||||
readonly prototype: WeakSet<object>;
|
||||
}
|
||||
declare var WeakSet: WeakSetConstructor;
|
||||
|
||||
4
src/lib/es2015.iterable.d.ts
vendored
4
src/lib/es2015.iterable.d.ts
vendored
@ -135,7 +135,7 @@ interface MapConstructor {
|
||||
interface WeakMap<K extends object, V> { }
|
||||
|
||||
interface WeakMapConstructor {
|
||||
new <K extends object, V>(iterable: Iterable<[K, V]>): WeakMap<K, V>;
|
||||
new <K extends object = object, V = any>(iterable: Iterable<[K, V]>): WeakMap<K, V>;
|
||||
}
|
||||
|
||||
interface Set<T> {
|
||||
@ -183,7 +183,7 @@ interface SetConstructor {
|
||||
interface WeakSet<T extends object> { }
|
||||
|
||||
interface WeakSetConstructor {
|
||||
new <T extends object>(iterable: Iterable<T>): WeakSet<T>;
|
||||
new <T extends object = object>(iterable: Iterable<T>): WeakSet<T>;
|
||||
}
|
||||
|
||||
interface Promise<T> { }
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
const strSet: Set<string> = new Set()
|
||||
>strSet : Set<string>
|
||||
>Set : Set<T>
|
||||
>new Set() : Set<any>
|
||||
>new Set() : Set<string>
|
||||
>Set : SetConstructor
|
||||
|
||||
strSet.add('Hello')
|
||||
|
||||
40
tests/baselines/reference/extendingSetWithCheckJs.symbols
Normal file
40
tests/baselines/reference/extendingSetWithCheckJs.symbols
Normal file
@ -0,0 +1,40 @@
|
||||
=== tests/cases/compiler/extendingSetWithCheckJs.ts ===
|
||||
class MySet extends Set {
|
||||
>MySet : Symbol(MySet, Decl(extendingSetWithCheckJs.ts, 0, 0))
|
||||
>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, --, --))
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
>super : Symbol(SetConstructor, Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --))
|
||||
}
|
||||
}
|
||||
|
||||
class MyWeakSet extends WeakSet {
|
||||
>MyWeakSet : Symbol(MyWeakSet, Decl(extendingSetWithCheckJs.ts, 4, 1))
|
||||
>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, --, --))
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
>super : Symbol(WeakSetConstructor, Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
|
||||
}
|
||||
}
|
||||
|
||||
class MyMap extends Map {
|
||||
>MyMap : Symbol(MyMap, Decl(extendingSetWithCheckJs.ts, 10, 1))
|
||||
>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, --, --))
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
>super : Symbol(MapConstructor, Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --))
|
||||
}
|
||||
}
|
||||
|
||||
class MyWeakMap extends WeakMap {
|
||||
>MyWeakMap : Symbol(MyWeakMap, Decl(extendingSetWithCheckJs.ts, 16, 1))
|
||||
>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, --, --))
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
>super : Symbol(WeakMapConstructor, Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --))
|
||||
}
|
||||
}
|
||||
44
tests/baselines/reference/extendingSetWithCheckJs.types
Normal file
44
tests/baselines/reference/extendingSetWithCheckJs.types
Normal file
@ -0,0 +1,44 @@
|
||||
=== tests/cases/compiler/extendingSetWithCheckJs.ts ===
|
||||
class MySet extends Set {
|
||||
>MySet : MySet
|
||||
>Set : Set<any>
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
>super() : void
|
||||
>super : SetConstructor
|
||||
}
|
||||
}
|
||||
|
||||
class MyWeakSet extends WeakSet {
|
||||
>MyWeakSet : MyWeakSet
|
||||
>WeakSet : WeakSet<object>
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
>super() : void
|
||||
>super : WeakSetConstructor
|
||||
}
|
||||
}
|
||||
|
||||
class MyMap extends Map {
|
||||
>MyMap : MyMap
|
||||
>Map : Map<any, any>
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
>super() : void
|
||||
>super : MapConstructor
|
||||
}
|
||||
}
|
||||
|
||||
class MyWeakMap extends WeakMap {
|
||||
>MyWeakMap : MyWeakMap
|
||||
>WeakMap : WeakMap<object, any>
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
>super() : void
|
||||
>super : WeakMapConstructor
|
||||
}
|
||||
}
|
||||
28
tests/cases/compiler/extendingSetWithCheckJs.ts
Normal file
28
tests/cases/compiler/extendingSetWithCheckJs.ts
Normal file
@ -0,0 +1,28 @@
|
||||
// @allowJs: true
|
||||
// @checkJs: true
|
||||
// @noEmit: true
|
||||
// @lib: es2017
|
||||
|
||||
class MySet extends Set {
|
||||
constructor() {
|
||||
super();
|
||||
}
|
||||
}
|
||||
|
||||
class MyWeakSet extends WeakSet {
|
||||
constructor() {
|
||||
super();
|
||||
}
|
||||
}
|
||||
|
||||
class MyMap extends Map {
|
||||
constructor() {
|
||||
super();
|
||||
}
|
||||
}
|
||||
|
||||
class MyWeakMap extends WeakMap {
|
||||
constructor() {
|
||||
super();
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user