我想将变量的类型设置为T。如果F是一个不返回promise而只返回T类型的对象的函数,我会做如下的事情:let x: ReturnType<typeof F>但是F是一个返回Promise<T>我该怎么做呢?
T
F
let x: ReturnType<typeof F>
Promise<T>
e0bqpujr1#
您可以改编Typescript手册的“高级类型”一章的条件类型中的类型推断一节中给出的示例
type Unpacked<T> = T extends (...args: any[]) => infer U ? U : T extends Promise<infer U> ? U : T;
例如,对于fetch,您将得到
fetch
type T = Unpacked<Unpacked<typeof fetch>> // Response
rqdpfwrv2#
或者,你可以这样做:
async function sumAsync(a: number, b: number): Promise<number> { return a + b; } type SumUnwrappedType = Awaited<ReturnType<typeof sumAsync>>
2条答案
按热度按时间e0bqpujr1#
您可以改编Typescript手册的“高级类型”一章的条件类型中的类型推断一节中给出的示例
例如,对于
fetch
,您将得到rqdpfwrv2#
或者,你可以这样做: