@@ -44,9 +44,9 @@ async function fIndexedTypeForPromiseOfStringProp(obj: Obj): Promise<Obj["string
44
44
45
45
return Promise.resolve(obj.stringProp);
46
46
>Promise.resolve(obj.stringProp) : Promise<string>
47
- >Promise.resolve : { <T>(value: T | PromiseLike<T>): Promise< T>; (): Promise<void>; }
47
+ >Promise.resolve : { <T>(value: T): Promise<T extends PromiseLike<infer U> ? U : T>; (): Promise<void>; }
48
48
>Promise : PromiseConstructor
49
- >resolve : { <T>(value: T | PromiseLike<T>): Promise< T>; (): Promise<void>; }
49
+ >resolve : { <T>(value: T): Promise<T extends PromiseLike<infer U> ? U : T>; (): Promise<void>; }
50
50
>obj.stringProp : string
51
51
>obj : Obj
52
52
>stringProp : string
@@ -58,9 +58,9 @@ async function fIndexedTypeForExplicitPromiseOfStringProp(obj: Obj): Promise<Obj
58
58
59
59
return Promise.resolve<Obj["stringProp"]>(obj.stringProp);
60
60
>Promise.resolve<Obj["stringProp"]>(obj.stringProp) : Promise<string>
61
- >Promise.resolve : { <T>(value: T | PromiseLike<T>): Promise< T>; (): Promise<void>; }
61
+ >Promise.resolve : { <T>(value: T): Promise<T extends PromiseLike<infer U> ? U : T>; (): Promise<void>; }
62
62
>Promise : PromiseConstructor
63
- >resolve : { <T>(value: T | PromiseLike<T>): Promise< T>; (): Promise<void>; }
63
+ >resolve : { <T>(value: T): Promise<T extends PromiseLike<infer U> ? U : T>; (): Promise<void>; }
64
64
>obj.stringProp : string
65
65
>obj : Obj
66
66
>stringProp : string
@@ -82,9 +82,9 @@ async function fIndexedTypeForPromiseOfAnyProp(obj: Obj): Promise<Obj["anyProp"]
82
82
83
83
return Promise.resolve(obj.anyProp);
84
84
>Promise.resolve(obj.anyProp) : Promise<any>
85
- >Promise.resolve : { <T>(value: T | PromiseLike<T>): Promise< T>; (): Promise<void>; }
85
+ >Promise.resolve : { <T>(value: T): Promise<T extends PromiseLike<infer U> ? U : T>; (): Promise<void>; }
86
86
>Promise : PromiseConstructor
87
- >resolve : { <T>(value: T | PromiseLike<T>): Promise< T>; (): Promise<void>; }
87
+ >resolve : { <T>(value: T): Promise<T extends PromiseLike<infer U> ? U : T>; (): Promise<void>; }
88
88
>obj.anyProp : any
89
89
>obj : Obj
90
90
>anyProp : any
@@ -96,9 +96,9 @@ async function fIndexedTypeForExplicitPromiseOfAnyProp(obj: Obj): Promise<Obj["a
96
96
97
97
return Promise.resolve<Obj["anyProp"]>(obj.anyProp);
98
98
>Promise.resolve<Obj["anyProp"]>(obj.anyProp) : Promise<any>
99
- >Promise.resolve : { <T>(value: T | PromiseLike<T>): Promise< T>; (): Promise<void>; }
99
+ >Promise.resolve : { <T>(value: T): Promise<T extends PromiseLike<infer U> ? U : T>; (): Promise<void>; }
100
100
>Promise : PromiseConstructor
101
- >resolve : { <T>(value: T | PromiseLike<T>): Promise< T>; (): Promise<void>; }
101
+ >resolve : { <T>(value: T): Promise<T extends PromiseLike<infer U> ? U : T>; (): Promise<void>; }
102
102
>obj.anyProp : any
103
103
>obj : Obj
104
104
>anyProp : any
@@ -120,9 +120,9 @@ async function fGenericIndexedTypeForPromiseOfStringProp<TObj extends Obj>(obj:
120
120
121
121
return Promise.resolve(obj.stringProp);
122
122
>Promise.resolve(obj.stringProp) : Promise<string>
123
- >Promise.resolve : { <T>(value: T | PromiseLike<T>): Promise< T>; (): Promise<void>; }
123
+ >Promise.resolve : { <T>(value: T): Promise<T extends PromiseLike<infer U> ? U : T>; (): Promise<void>; }
124
124
>Promise : PromiseConstructor
125
- >resolve : { <T>(value: T | PromiseLike<T>): Promise< T>; (): Promise<void>; }
125
+ >resolve : { <T>(value: T): Promise<T extends PromiseLike<infer U> ? U : T>; (): Promise<void>; }
126
126
>obj.stringProp : string
127
127
>obj : TObj
128
128
>stringProp : string
@@ -133,10 +133,10 @@ async function fGenericIndexedTypeForExplicitPromiseOfStringProp<TObj extends Ob
133
133
>obj : TObj
134
134
135
135
return Promise.resolve<TObj["stringProp"]>(obj.stringProp);
136
- >Promise.resolve<TObj["stringProp"]>(obj.stringProp) : Promise<TObj["stringProp"]>
137
- >Promise.resolve : { <T>(value: T | PromiseLike<T>): Promise< T>; (): Promise<void>; }
136
+ >Promise.resolve<TObj["stringProp"]>(obj.stringProp) : Promise<TObj["stringProp"] extends PromiseLike<infer U> ? U : TObj["stringProp"] >
137
+ >Promise.resolve : { <T>(value: T): Promise<T extends PromiseLike<infer U> ? U : T>; (): Promise<void>; }
138
138
>Promise : PromiseConstructor
139
- >resolve : { <T>(value: T | PromiseLike<T>): Promise< T>; (): Promise<void>; }
139
+ >resolve : { <T>(value: T): Promise<T extends PromiseLike<infer U> ? U : T>; (): Promise<void>; }
140
140
>obj.stringProp : string
141
141
>obj : TObj
142
142
>stringProp : string
@@ -158,9 +158,9 @@ async function fGenericIndexedTypeForPromiseOfAnyProp<TObj extends Obj>(obj: TOb
158
158
159
159
return Promise.resolve(obj.anyProp);
160
160
>Promise.resolve(obj.anyProp) : Promise<any>
161
- >Promise.resolve : { <T>(value: T | PromiseLike<T>): Promise< T>; (): Promise<void>; }
161
+ >Promise.resolve : { <T>(value: T): Promise<T extends PromiseLike<infer U> ? U : T>; (): Promise<void>; }
162
162
>Promise : PromiseConstructor
163
- >resolve : { <T>(value: T | PromiseLike<T>): Promise< T>; (): Promise<void>; }
163
+ >resolve : { <T>(value: T): Promise<T extends PromiseLike<infer U> ? U : T>; (): Promise<void>; }
164
164
>obj.anyProp : any
165
165
>obj : TObj
166
166
>anyProp : any
@@ -171,10 +171,10 @@ async function fGenericIndexedTypeForExplicitPromiseOfAnyProp<TObj extends Obj>(
171
171
>obj : TObj
172
172
173
173
return Promise.resolve<TObj["anyProp"]>(obj.anyProp);
174
- >Promise.resolve<TObj["anyProp"]>(obj.anyProp) : Promise<TObj["anyProp"]>
175
- >Promise.resolve : { <T>(value: T | PromiseLike<T>): Promise< T>; (): Promise<void>; }
174
+ >Promise.resolve<TObj["anyProp"]>(obj.anyProp) : Promise<TObj["anyProp"] extends PromiseLike<infer U> ? U : TObj["anyProp"] >
175
+ >Promise.resolve : { <T>(value: T): Promise<T extends PromiseLike<infer U> ? U : T>; (): Promise<void>; }
176
176
>Promise : PromiseConstructor
177
- >resolve : { <T>(value: T | PromiseLike<T>): Promise< T>; (): Promise<void>; }
177
+ >resolve : { <T>(value: T): Promise<T extends PromiseLike<infer U> ? U : T>; (): Promise<void>; }
178
178
>obj.anyProp : any
179
179
>obj : TObj
180
180
>anyProp : any
@@ -191,32 +191,33 @@ async function fGenericIndexedTypeForKProp<TObj extends Obj, K extends keyof TOb
191
191
>key : K
192
192
}
193
193
194
- async function fGenericIndexedTypeForPromiseOfKProp<TObj extends Obj, K extends keyof TObj>(obj: TObj, key: K): Promise<TObj[K]> {
195
- >fGenericIndexedTypeForPromiseOfKProp : <TObj extends Obj, K extends keyof TObj>(obj: TObj, key: K) => Promise<TObj[K]>
194
+ async function fGenericIndexedTypeForPromiseOfKProp<TObj extends Obj, K extends keyof TObj>(obj: TObj, key: K): Promise<TObj[K] extends PromiseLike<infer U> ? U : TObj[K] > {
195
+ >fGenericIndexedTypeForPromiseOfKProp : <TObj extends Obj, K extends keyof TObj>(obj: TObj, key: K) => Promise<TObj[K] extends PromiseLike<infer U> ? U : TObj[K] >
196
196
>obj : TObj
197
197
>key : K
198
198
199
199
return Promise.resolve(obj[key]);
200
- >Promise.resolve(obj[key]) : Promise<TObj[K]>
201
- >Promise.resolve : { <T>(value: T | PromiseLike<T>): Promise< T>; (): Promise<void>; }
200
+ >Promise.resolve(obj[key]) : Promise<TObj[K] extends PromiseLike<infer U> ? U : TObj[K] >
201
+ >Promise.resolve : { <T>(value: T): Promise<T extends PromiseLike<infer U> ? U : T>; (): Promise<void>; }
202
202
>Promise : PromiseConstructor
203
- >resolve : { <T>(value: T | PromiseLike<T>): Promise< T>; (): Promise<void>; }
203
+ >resolve : { <T>(value: T): Promise<T extends PromiseLike<infer U> ? U : T>; (): Promise<void>; }
204
204
>obj[key] : TObj[K]
205
205
>obj : TObj
206
206
>key : K
207
207
}
208
208
209
- async function fGenericIndexedTypeForExplicitPromiseOfKProp<TObj extends Obj, K extends keyof TObj>(obj: TObj, key: K): Promise<TObj[K]> {
210
- >fGenericIndexedTypeForExplicitPromiseOfKProp : <TObj extends Obj, K extends keyof TObj>(obj: TObj, key: K) => Promise<TObj[K]>
209
+ async function fGenericIndexedTypeForExplicitPromiseOfKProp<TObj extends Obj, K extends keyof TObj>(obj: TObj, key: K): Promise<TObj[K] extends PromiseLike<infer U> ? U : TObj[K] > {
210
+ >fGenericIndexedTypeForExplicitPromiseOfKProp : <TObj extends Obj, K extends keyof TObj>(obj: TObj, key: K) => Promise<TObj[K] extends PromiseLike<infer U> ? U : TObj[K] >
211
211
>obj : TObj
212
212
>key : K
213
213
214
214
return Promise.resolve<TObj[K]>(obj[key]);
215
- >Promise.resolve<TObj[K]>(obj[key]) : Promise<TObj[K]>
216
- >Promise.resolve : { <T>(value: T | PromiseLike<T>): Promise< T>; (): Promise<void>; }
215
+ >Promise.resolve<TObj[K]>(obj[key]) : Promise<TObj[K] extends PromiseLike<infer U> ? U : TObj[K] >
216
+ >Promise.resolve : { <T>(value: T): Promise<T extends PromiseLike<infer U> ? U : T>; (): Promise<void>; }
217
217
>Promise : PromiseConstructor
218
- >resolve : { <T>(value: T | PromiseLike<T>): Promise< T>; (): Promise<void>; }
218
+ >resolve : { <T>(value: T): Promise<T extends PromiseLike<infer U> ? U : T>; (): Promise<void>; }
219
219
>obj[key] : TObj[K]
220
220
>obj : TObj
221
221
>key : K
222
222
}
223
+
0 commit comments