如何声明一个异步函数的成功返回类型的类型?

时间:2020-03-26 19:48:35

标签: typescript promise async-await

是否可以将变量声明为异步函数(或Promise)的成功返回值?

给定功能后,就有可能将变量声明为

let foo: ReturnType<typeof myFunc>;

如果函数为async,则

let asyncFoo: ReturnType<typeof myAsyncFunc>;

上面的变量将被键入为Promise<{...}>,这很接近,但与我要查找的不完全相同。我想获取await ed值的类型(或传递到.then()回调中的值)。这种类型看起来如何?

1 个答案:

答案 0 :(得分:1)

使用'infer' keyword

type ExtractPromiseType<T extends Promise<any>> = 
    T extends Promise<infer U> ? U : never;

let asyncFoo: ExtractPromiseType<ReturnType<typeof myAsyncFunc>>;