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