1+ type Awaited < T > = T extends PromiseLike < infer U > ? U : T ;
2+
13interface PromiseConstructor {
24 /**
35 * A reference to the prototype.
@@ -10,103 +12,95 @@ interface PromiseConstructor {
1012 * a resolve callback used to resolve the promise with a value or the result of another promise,
1113 * and a reject callback used to reject the promise with a provided reason or error.
1214 */
13- new < T > ( executor : ( resolve : ( value ?: T | PromiseLike < T > ) => void , reject : ( reason ?: any ) => void ) => void ) : Promise < T > ;
15+ new < T > ( executor : ( resolve : ( value ?: T ) => void , reject : ( reason ?: any ) => void ) => void ) : Promise < Awaited < T > > ;
1416
1517 /**
1618 * Creates a Promise that is resolved with an array of results when all of the provided Promises
1719 * resolve, or rejected when any Promise is rejected.
1820 * @param values An array of Promises.
1921 * @returns A new Promise.
2022 */
21- all < T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 > ( values : readonly [ 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 ] > ;
23+ all < T extends [ any , any , any , any , any , any , any , any , any , any ] > ( values : T ) : Promise < { - readonly [ P in keyof T ] : Awaited < T [ P ] > } > ;
2224
2325 /**
2426 * Creates a Promise that is resolved with an array of results when all of the provided Promises
2527 * resolve, or rejected when any Promise is rejected.
2628 * @param values An array of Promises.
2729 * @returns A new Promise.
2830 */
29- all < T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 > ( values : readonly [ 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 ] > ;
31+ all < T extends [ any , any , any , any , any , any , any , any , any ] > ( values : T ) : Promise < { - readonly [ P in keyof T ] : Awaited < T [ P ] > } > ;
3032
3133 /**
3234 * Creates a Promise that is resolved with an array of results when all of the provided Promises
3335 * resolve, or rejected when any Promise is rejected.
3436 * @param values An array of Promises.
3537 * @returns A new Promise.
3638 */
37- all < T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 > ( values : readonly [ 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 ] > ;
39+ all < T extends [ any , any , any , any , any , any , any , any ] > ( values : T ) : Promise < { - readonly [ P in keyof T ] : Awaited < T [ P ] > } > ;
3840
3941 /**
4042 * Creates a Promise that is resolved with an array of results when all of the provided Promises
4143 * resolve, or rejected when any Promise is rejected.
4244 * @param values An array of Promises.
4345 * @returns A new Promise.
4446 */
45- all < T1 , T2 , T3 , T4 , T5 , T6 , T7 > ( values : readonly [ 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 ] > ;
47+ all < T extends [ any , any , any , any , any , any , any ] > ( values : T ) : Promise < { - readonly [ P in keyof T ] : Awaited < T [ P ] > } > ;
4648
4749 /**
4850 * Creates a Promise that is resolved with an array of results when all of the provided Promises
4951 * resolve, or rejected when any Promise is rejected.
5052 * @param values An array of Promises.
5153 * @returns A new Promise.
5254 */
53- all < T1 , T2 , T3 , T4 , T5 , T6 > ( values : readonly [ 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 ] > ;
55+ all < T extends [ any , any , any , any , any , any ] > ( values : T ) : Promise < { - readonly [ P in keyof T ] : Awaited < T [ P ] > } > ;
5456
5557 /**
5658 * Creates a Promise that is resolved with an array of results when all of the provided Promises
5759 * resolve, or rejected when any Promise is rejected.
5860 * @param values An array of Promises.
5961 * @returns A new Promise.
6062 */
61- all < T1 , T2 , T3 , T4 , T5 > ( values : readonly [ T1 | PromiseLike < T1 > , T2 | PromiseLike < T2 > , T3 | PromiseLike < T3 > , T4 | PromiseLike < T4 > , T5 | PromiseLike < T5 > ] ) : Promise < [ T1 , T2 , T3 , T4 , T5 ] > ;
63+ all < T extends [ any , any , any , any , any ] > ( values : T ) : Promise < { - readonly [ P in keyof T ] : Awaited < T [ P ] > } > ;
6264
6365 /**
6466 * Creates a Promise that is resolved with an array of results when all of the provided Promises
6567 * resolve, or rejected when any Promise is rejected.
6668 * @param values An array of Promises.
6769 * @returns A new Promise.
6870 */
69- all < T1 , T2 , T3 , T4 > ( values : readonly [ T1 | PromiseLike < T1 > , T2 | PromiseLike < T2 > , T3 | PromiseLike < T3 > , T4 | PromiseLike < T4 > ] ) : Promise < [ T1 , T2 , T3 , T4 ] > ;
71+ all < T extends [ any , any , any , any ] > ( values : T ) : Promise < { - readonly [ P in keyof T ] : Awaited < T [ P ] > } > ;
7072
7173 /**
7274 * Creates a Promise that is resolved with an array of results when all of the provided Promises
7375 * resolve, or rejected when any Promise is rejected.
7476 * @param values An array of Promises.
7577 * @returns A new Promise.
7678 */
77- all < T1 , T2 , T3 > ( values : readonly [ T1 | PromiseLike < T1 > , T2 | PromiseLike < T2 > , T3 | PromiseLike < T3 > ] ) : Promise < [ T1 , T2 , T3 ] > ;
79+ all < T extends [ any , any , any ] > ( values : T ) : Promise < { - readonly [ P in keyof T ] : Awaited < T [ P ] > } > ;
7880
7981 /**
8082 * Creates a Promise that is resolved with an array of results when all of the provided Promises
8183 * resolve, or rejected when any Promise is rejected.
8284 * @param values An array of Promises.
8385 * @returns A new Promise.
8486 */
85- all < T1 , T2 > ( values : readonly [ T1 | PromiseLike < T1 > , T2 | PromiseLike < T2 > ] ) : Promise < [ T1 , T2 ] > ;
87+ all < T extends [ any , any ] > ( values : T ) : Promise < { - readonly [ P in keyof T ] : Awaited < T [ P ] > } > ;
8688
8789 /**
8890 * Creates a Promise that is resolved with an array of results when all of the provided Promises
8991 * resolve, or rejected when any Promise is rejected.
9092 * @param values An array of Promises.
9193 * @returns A new Promise.
9294 */
93- all < T > ( values : readonly ( T | PromiseLike < T > ) [ ] ) : Promise < T [ ] > ;
94-
95- /**
96- * Creates a Promise that is resolved or rejected when any of the provided Promises are resolved
97- * or rejected.
98- * @param values An array of Promises.
99- * @returns A new Promise.
100- */
101- race < T > ( values : readonly T [ ] ) : Promise < T extends PromiseLike < infer U > ? U : T > ;
95+ all < T extends readonly any [ ] > ( values : T ) : Promise < { - readonly [ P in keyof T ] : Awaited < T [ P ] > } > ;
10296
10397 /**
10498 * Creates a Promise that is resolved or rejected when any of the provided Promises are resolved
10599 * or rejected.
106100 * @param values An iterable of Promises.
107101 * @returns A new Promise.
108102 */
109- race < T > ( values : Iterable < T > ) : Promise < T extends PromiseLike < infer U > ? U : T > ;
103+ race < T > ( values : Iterable < T > ) : Promise < Awaited < T > > ;
110104
111105 /**
112106 * Creates a new rejected promise for the provided reason.
@@ -120,10 +114,10 @@ interface PromiseConstructor {
120114 * @param value A promise.
121115 * @returns A promise whose internal state matches the provided promise.
122116 */
123- resolve < T > ( value : T | PromiseLike < T > ) : Promise < T > ;
117+ resolve < T > ( value : T ) : Promise < Awaited < T > > ;
124118
125119 /**
126- * Creates a new resolved promise .
120+ * Creates a new resolved promise.
127121 * @returns A resolved promise.
128122 */
129123 resolve ( ) : Promise < void > ;
0 commit comments