Skip to content

Commit 3ff1780

Browse files
committed
Better typings for promise.race based on mapped tuple types
Following the feature - Mapped tuple types #25947 - it is now possible to have better typings for Promise.race
1 parent 6adb9d1 commit 3ff1780

File tree

1 file changed

+1
-73
lines changed

1 file changed

+1
-73
lines changed

src/lib/es2015.promise.d.ts

+1-73
Original file line numberDiff line numberDiff line change
@@ -98,79 +98,7 @@ interface PromiseConstructor {
9898
* @param values An array of Promises.
9999
* @returns A new Promise.
100100
*/
101-
race<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(values: [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>, T5 | PromiseLike<T5>, T6 | PromiseLike<T6>, T7 | PromiseLike<T7>, T8 | PromiseLike<T8>, T9 | PromiseLike<T9>, T10 | PromiseLike<T10>]): Promise<T1 | T2 | T3 | T4 | T5 | T6 | T7 | T8 | T9 | T10>;
102-
103-
/**
104-
* Creates a Promise that is resolved or rejected when any of the provided Promises are resolved
105-
* or rejected.
106-
* @param values An array of Promises.
107-
* @returns A new Promise.
108-
*/
109-
race<T1, T2, T3, T4, T5, T6, T7, T8, T9>(values: [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>, T5 | PromiseLike<T5>, T6 | PromiseLike<T6>, T7 | PromiseLike<T7>, T8 | PromiseLike<T8>, T9 | PromiseLike<T9>]): Promise<T1 | T2 | T3 | T4 | T5 | T6 | T7 | T8 | T9>;
110-
111-
/**
112-
* Creates a Promise that is resolved or rejected when any of the provided Promises are resolved
113-
* or rejected.
114-
* @param values An array of Promises.
115-
* @returns A new Promise.
116-
*/
117-
race<T1, T2, T3, T4, T5, T6, T7, T8>(values: [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>, T5 | PromiseLike<T5>, T6 | PromiseLike<T6>, T7 | PromiseLike<T7>, T8 | PromiseLike<T8>]): Promise<T1 | T2 | T3 | T4 | T5 | T6 | T7 | T8>;
118-
119-
/**
120-
* Creates a Promise that is resolved or rejected when any of the provided Promises are resolved
121-
* or rejected.
122-
* @param values An array of Promises.
123-
* @returns A new Promise.
124-
*/
125-
race<T1, T2, T3, T4, T5, T6, T7>(values: [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>, T5 | PromiseLike<T5>, T6 | PromiseLike<T6>, T7 | PromiseLike<T7>]): Promise<T1 | T2 | T3 | T4 | T5 | T6 | T7>;
126-
127-
/**
128-
* Creates a Promise that is resolved or rejected when any of the provided Promises are resolved
129-
* or rejected.
130-
* @param values An array of Promises.
131-
* @returns A new Promise.
132-
*/
133-
race<T1, T2, T3, T4, T5, T6>(values: [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>, T5 | PromiseLike<T5>, T6 | PromiseLike<T6>]): Promise<T1 | T2 | T3 | T4 | T5 | T6>;
134-
135-
/**
136-
* Creates a Promise that is resolved or rejected when any of the provided Promises are resolved
137-
* or rejected.
138-
* @param values An array of Promises.
139-
* @returns A new Promise.
140-
*/
141-
race<T1, T2, T3, T4, T5>(values: [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>, T5 | PromiseLike<T5>]): Promise<T1 | T2 | T3 | T4 | T5>;
142-
143-
/**
144-
* Creates a Promise that is resolved or rejected when any of the provided Promises are resolved
145-
* or rejected.
146-
* @param values An array of Promises.
147-
* @returns A new Promise.
148-
*/
149-
race<T1, T2, T3, T4>(values: [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>, T4 | PromiseLike<T4>]): Promise<T1 | T2 | T3 | T4>;
150-
151-
/**
152-
* Creates a Promise that is resolved or rejected when any of the provided Promises are resolved
153-
* or rejected.
154-
* @param values An array of Promises.
155-
* @returns A new Promise.
156-
*/
157-
race<T1, T2, T3>(values: [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>]): Promise<T1 | T2 | T3>;
158-
159-
/**
160-
* Creates a Promise that is resolved or rejected when any of the provided Promises are resolved
161-
* or rejected.
162-
* @param values An array of Promises.
163-
* @returns A new Promise.
164-
*/
165-
race<T1, T2>(values: [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>]): Promise<T1 | T2>;
166-
167-
/**
168-
* Creates a Promise that is resolved or rejected when any of the provided Promises are resolved
169-
* or rejected.
170-
* @param values An array of Promises.
171-
* @returns A new Promise.
172-
*/
173-
race<T>(values: (T | PromiseLike<T>)[]): Promise<T>;
101+
race<Ts extends any[]>(values: { [P in keyof Ts]: (Ts[P] | PromiseLike<Ts[P]>) }): Promise<Ts extends (infer U)[] ? U : never>;
174102

175103
/**
176104
* Creates a new rejected promise for the provided reason.

0 commit comments

Comments
 (0)