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:
Mohamed Hegazy
2018-07-02 11:53:17 -07:00
parent 7dc66e916a
commit 4dd1f9fc7c
6 changed files with 118 additions and 9 deletions

View File

@@ -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;

View File

@@ -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> { }