@@ -44,9 +44,9 @@ async function fIndexedTypeForPromiseOfStringProp(obj: Obj): Promise<Obj["string
4444
4545 return Promise.resolve(obj.stringProp);
4646>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>; }
4848>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>; }
5050>obj.stringProp : string
5151>obj : Obj
5252>stringProp : string
@@ -58,9 +58,9 @@ async function fIndexedTypeForExplicitPromiseOfStringProp(obj: Obj): Promise<Obj
5858
5959 return Promise.resolve<Obj["stringProp"]>(obj.stringProp);
6060>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>; }
6262>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>; }
6464>obj.stringProp : string
6565>obj : Obj
6666>stringProp : string
@@ -82,9 +82,9 @@ async function fIndexedTypeForPromiseOfAnyProp(obj: Obj): Promise<Obj["anyProp"]
8282
8383 return Promise.resolve(obj.anyProp);
8484>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>; }
8686>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>; }
8888>obj.anyProp : any
8989>obj : Obj
9090>anyProp : any
@@ -96,9 +96,9 @@ async function fIndexedTypeForExplicitPromiseOfAnyProp(obj: Obj): Promise<Obj["a
9696
9797 return Promise.resolve<Obj["anyProp"]>(obj.anyProp);
9898>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>; }
100100>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>; }
102102>obj.anyProp : any
103103>obj : Obj
104104>anyProp : any
@@ -120,9 +120,9 @@ async function fGenericIndexedTypeForPromiseOfStringProp<TObj extends Obj>(obj:
120120
121121 return Promise.resolve(obj.stringProp);
122122>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>; }
124124>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>; }
126126>obj.stringProp : string
127127>obj : TObj
128128>stringProp : string
@@ -133,10 +133,10 @@ async function fGenericIndexedTypeForExplicitPromiseOfStringProp<TObj extends Ob
133133>obj : TObj
134134
135135 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>; }
138138>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>; }
140140>obj.stringProp : string
141141>obj : TObj
142142>stringProp : string
@@ -158,9 +158,9 @@ async function fGenericIndexedTypeForPromiseOfAnyProp<TObj extends Obj>(obj: TOb
158158
159159 return Promise.resolve(obj.anyProp);
160160>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>; }
162162>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>; }
164164>obj.anyProp : any
165165>obj : TObj
166166>anyProp : any
@@ -171,10 +171,10 @@ async function fGenericIndexedTypeForExplicitPromiseOfAnyProp<TObj extends Obj>(
171171>obj : TObj
172172
173173 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>; }
176176>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>; }
178178>obj.anyProp : any
179179>obj : TObj
180180>anyProp : any
@@ -191,32 +191,33 @@ async function fGenericIndexedTypeForKProp<TObj extends Obj, K extends keyof TOb
191191>key : K
192192}
193193
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] >
196196>obj : TObj
197197>key : K
198198
199199 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>; }
202202>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>; }
204204>obj[key] : TObj[K]
205205>obj : TObj
206206>key : K
207207}
208208
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] >
211211>obj : TObj
212212>key : K
213213
214214 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>; }
217217>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>; }
219219>obj[key] : TObj[K]
220220>obj : TObj
221221>key : K
222222}
223+
0 commit comments