diff --git a/src/lib/es2015.promise.d.ts b/src/lib/es2015.promise.d.ts index 2a98f215193a0..5338a4e7d36d3 100644 --- a/src/lib/es2015.promise.d.ts +++ b/src/lib/es2015.promise.d.ts @@ -10,7 +10,7 @@ interface PromiseConstructor { * a resolve callback used to resolve the promise with a value or the result of another promise, * and a reject callback used to reject the promise with a provided reason or error. */ - new (executor: (resolve: (value?: T | PromiseLike) => void, reject: (reason?: any) => void) => void): Promise; + new (executor: (resolve: (value?: T) => void, reject: (reason?: any) => void) => void): Promise>; /** * Creates a Promise that is resolved with an array of results when all of the provided Promises @@ -18,7 +18,7 @@ interface PromiseConstructor { * @param values An array of Promises. * @returns A new Promise. */ - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike, T10 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]>; + all(values: [T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]): Promise<[ResolveType, ResolveType, ResolveType, ResolveType, ResolveType, ResolveType, ResolveType, ResolveType, ResolveType, ResolveType]>; /** * Creates a Promise that is resolved with an array of results when all of the provided Promises @@ -26,7 +26,7 @@ interface PromiseConstructor { * @param values An array of Promises. * @returns A new Promise. */ - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9]>; + all(values: [T1, T2, T3, T4, T5, T6, T7, T8, T9]): Promise<[ResolveType, ResolveType, ResolveType, ResolveType, ResolveType, ResolveType, ResolveType, ResolveType, ResolveType]>; /** * Creates a Promise that is resolved with an array of results when all of the provided Promises @@ -34,7 +34,7 @@ interface PromiseConstructor { * @param values An array of Promises. * @returns A new Promise. */ - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8]>; + all(values: [T1, T2, T3, T4, T5, T6, T7, T8]): Promise<[ResolveType, ResolveType, ResolveType, ResolveType, ResolveType, ResolveType, ResolveType, ResolveType]>; /** * Creates a Promise that is resolved with an array of results when all of the provided Promises @@ -42,7 +42,7 @@ interface PromiseConstructor { * @param values An array of Promises. * @returns A new Promise. */ - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7]>; + all(values: [T1, T2, T3, T4, T5, T6, T7]): Promise<[ResolveType, ResolveType, ResolveType, ResolveType, ResolveType, ResolveType, ResolveType]>; /** * Creates a Promise that is resolved with an array of results when all of the provided Promises @@ -50,7 +50,7 @@ interface PromiseConstructor { * @param values An array of Promises. * @returns A new Promise. */ - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6]>; + all(values: [T1, T2, T3, T4, T5, T6]): Promise<[ResolveType, ResolveType, ResolveType, ResolveType, ResolveType, ResolveType]>; /** * Creates a Promise that is resolved with an array of results when all of the provided Promises @@ -58,7 +58,7 @@ interface PromiseConstructor { * @param values An array of Promises. * @returns A new Promise. */ - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike]): Promise<[T1, T2, T3, T4, T5]>; + all(values: [T1, T2, T3, T4, T5]): Promise<[ResolveType, ResolveType, ResolveType, ResolveType, ResolveType]>; /** * Creates a Promise that is resolved with an array of results when all of the provided Promises @@ -66,7 +66,7 @@ interface PromiseConstructor { * @param values An array of Promises. * @returns A new Promise. */ - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike ]): Promise<[T1, T2, T3, T4]>; + all(values: [T1, T2, T3, T4]): Promise<[ResolveType, ResolveType, ResolveType, ResolveType]>; /** * Creates a Promise that is resolved with an array of results when all of the provided Promises @@ -74,7 +74,7 @@ interface PromiseConstructor { * @param values An array of Promises. * @returns A new Promise. */ - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike]): Promise<[T1, T2, T3]>; + all(values: [T1, T2, T3]): Promise<[ResolveType, ResolveType, ResolveType]>; /** * Creates a Promise that is resolved with an array of results when all of the provided Promises @@ -82,7 +82,7 @@ interface PromiseConstructor { * @param values An array of Promises. * @returns A new Promise. */ - all(values: [T1 | PromiseLike, T2 | PromiseLike]): Promise<[T1, T2]>; + all(values: [T1, T2]): Promise<[ResolveType, ResolveType]>; /** * Creates a Promise that is resolved with an array of results when all of the provided Promises @@ -90,7 +90,7 @@ interface PromiseConstructor { * @param values An array of Promises. * @returns A new Promise. */ - all(values: (T | PromiseLike)[]): Promise; + all(values: ReadonlyArray): Promise[]>; /** * Creates a Promise that is resolved or rejected when any of the provided Promises are resolved @@ -98,7 +98,7 @@ interface PromiseConstructor { * @param values An array of Promises. * @returns A new Promise. */ - race(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike, T10 | PromiseLike]): Promise; + race(values: [T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]): Promise>; /** * Creates a Promise that is resolved or rejected when any of the provided Promises are resolved @@ -106,7 +106,7 @@ interface PromiseConstructor { * @param values An array of Promises. * @returns A new Promise. */ - race(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike]): Promise; + race(values: [T1, T2, T3, T4, T5, T6, T7, T8, T9]): Promise>; /** * Creates a Promise that is resolved or rejected when any of the provided Promises are resolved @@ -114,7 +114,7 @@ interface PromiseConstructor { * @param values An array of Promises. * @returns A new Promise. */ - race(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike]): Promise; + race(values: [T1, T2, T3, T4, T5, T6, T7, T8]): Promise>; /** * Creates a Promise that is resolved or rejected when any of the provided Promises are resolved @@ -122,7 +122,7 @@ interface PromiseConstructor { * @param values An array of Promises. * @returns A new Promise. */ - race(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike]): Promise; + race(values: [T1, T2, T3, T4, T5, T6, T7]): Promise>; /** * Creates a Promise that is resolved or rejected when any of the provided Promises are resolved @@ -130,7 +130,7 @@ interface PromiseConstructor { * @param values An array of Promises. * @returns A new Promise. */ - race(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike, T6 | PromiseLike]): Promise; + race(values: [T1, T2, T3, T4, T5, T6]): Promise>; /** * Creates a Promise that is resolved or rejected when any of the provided Promises are resolved @@ -138,7 +138,7 @@ interface PromiseConstructor { * @param values An array of Promises. * @returns A new Promise. */ - race(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike, T5 | PromiseLike]): Promise; + race(values: [T1, T2, T3, T4, T5]): Promise>; /** * Creates a Promise that is resolved or rejected when any of the provided Promises are resolved @@ -146,7 +146,7 @@ interface PromiseConstructor { * @param values An array of Promises. * @returns A new Promise. */ - race(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike]): Promise; + race(values: [T1, T2, T3, T4]): Promise>; /** * Creates a Promise that is resolved or rejected when any of the provided Promises are resolved @@ -154,7 +154,7 @@ interface PromiseConstructor { * @param values An array of Promises. * @returns A new Promise. */ - race(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike]): Promise; + race(values: [T1, T2, T3]): Promise>; /** * Creates a Promise that is resolved or rejected when any of the provided Promises are resolved @@ -162,7 +162,7 @@ interface PromiseConstructor { * @param values An array of Promises. * @returns A new Promise. */ - race(values: [T1 | PromiseLike, T2 | PromiseLike]): Promise; + race(values: [T1, T2]): Promise>; /** * Creates a Promise that is resolved or rejected when any of the provided Promises are resolved @@ -170,7 +170,7 @@ interface PromiseConstructor { * @param values An array of Promises. * @returns A new Promise. */ - race(values: (T | PromiseLike)[]): Promise; + race(values: ReadonlyArray): Promise>; /** * Creates a new rejected promise for the provided reason. @@ -184,7 +184,7 @@ interface PromiseConstructor { * @param value A promise. * @returns A promise whose internal state matches the provided promise. */ - resolve(value: T | PromiseLike): Promise; + resolve(value: T): Promise>; /** * Creates a new resolved promise . diff --git a/src/lib/es5.d.ts b/src/lib/es5.d.ts index 8dc6ee90a2ed7..903fa71e3fac6 100644 --- a/src/lib/es5.d.ts +++ b/src/lib/es5.d.ts @@ -1468,6 +1468,11 @@ type ReturnType any> = T extends (...args: any[]) */ type InstanceType any> = T extends new (...args: any[]) => infer R ? R : any; +/** + * Obtain the resolved type of a PromiseLike type + */ +type ResolveType = T extends PromiseLike ? R : T + /** * Marker for contextual 'this' type */