1
+ type Awaited < T > = T extends PromiseLike < infer U > ? U : T ;
2
+
1
3
interface PromiseConstructor {
2
4
/**
3
5
* A reference to the prototype.
@@ -10,103 +12,95 @@ interface PromiseConstructor {
10
12
* a resolve callback used to resolve the promise with a value or the result of another promise,
11
13
* and a reject callback used to reject the promise with a provided reason or error.
12
14
*/
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 > > ;
14
16
15
17
/**
16
18
* Creates a Promise that is resolved with an array of results when all of the provided Promises
17
19
* resolve, or rejected when any Promise is rejected.
18
20
* @param values An array of Promises.
19
21
* @returns A new Promise.
20
22
*/
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 ] > } > ;
22
24
23
25
/**
24
26
* Creates a Promise that is resolved with an array of results when all of the provided Promises
25
27
* resolve, or rejected when any Promise is rejected.
26
28
* @param values An array of Promises.
27
29
* @returns A new Promise.
28
30
*/
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 ] > } > ;
30
32
31
33
/**
32
34
* Creates a Promise that is resolved with an array of results when all of the provided Promises
33
35
* resolve, or rejected when any Promise is rejected.
34
36
* @param values An array of Promises.
35
37
* @returns A new Promise.
36
38
*/
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 ] > } > ;
38
40
39
41
/**
40
42
* Creates a Promise that is resolved with an array of results when all of the provided Promises
41
43
* resolve, or rejected when any Promise is rejected.
42
44
* @param values An array of Promises.
43
45
* @returns A new Promise.
44
46
*/
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 ] > } > ;
46
48
47
49
/**
48
50
* Creates a Promise that is resolved with an array of results when all of the provided Promises
49
51
* resolve, or rejected when any Promise is rejected.
50
52
* @param values An array of Promises.
51
53
* @returns A new Promise.
52
54
*/
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 ] > } > ;
54
56
55
57
/**
56
58
* Creates a Promise that is resolved with an array of results when all of the provided Promises
57
59
* resolve, or rejected when any Promise is rejected.
58
60
* @param values An array of Promises.
59
61
* @returns A new Promise.
60
62
*/
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 ] > } > ;
62
64
63
65
/**
64
66
* Creates a Promise that is resolved with an array of results when all of the provided Promises
65
67
* resolve, or rejected when any Promise is rejected.
66
68
* @param values An array of Promises.
67
69
* @returns A new Promise.
68
70
*/
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 ] > } > ;
70
72
71
73
/**
72
74
* Creates a Promise that is resolved with an array of results when all of the provided Promises
73
75
* resolve, or rejected when any Promise is rejected.
74
76
* @param values An array of Promises.
75
77
* @returns A new Promise.
76
78
*/
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 ] > } > ;
78
80
79
81
/**
80
82
* Creates a Promise that is resolved with an array of results when all of the provided Promises
81
83
* resolve, or rejected when any Promise is rejected.
82
84
* @param values An array of Promises.
83
85
* @returns A new Promise.
84
86
*/
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 ] > } > ;
86
88
87
89
/**
88
90
* Creates a Promise that is resolved with an array of results when all of the provided Promises
89
91
* resolve, or rejected when any Promise is rejected.
90
92
* @param values An array of Promises.
91
93
* @returns A new Promise.
92
94
*/
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 ] > } > ;
102
96
103
97
/**
104
98
* Creates a Promise that is resolved or rejected when any of the provided Promises are resolved
105
99
* or rejected.
106
100
* @param values An iterable of Promises.
107
101
* @returns A new Promise.
108
102
*/
109
- race < T > ( values : Iterable < T > ) : Promise < T extends PromiseLike < infer U > ? U : T > ;
103
+ race < T > ( values : Iterable < T > ) : Promise < Awaited < T > > ;
110
104
111
105
/**
112
106
* Creates a new rejected promise for the provided reason.
@@ -120,10 +114,10 @@ interface PromiseConstructor {
120
114
* @param value A promise.
121
115
* @returns A promise whose internal state matches the provided promise.
122
116
*/
123
- resolve < T > ( value : T | PromiseLike < T > ) : Promise < T > ;
117
+ resolve < T > ( value : T ) : Promise < Awaited < T > > ;
124
118
125
119
/**
126
- * Creates a new resolved promise .
120
+ * Creates a new resolved promise.
127
121
* @returns A resolved promise.
128
122
*/
129
123
resolve ( ) : Promise < void > ;
0 commit comments