首页 > 解决方案 > 如何声明一个异步函数的成功返回类型?

问题描述

有没有办法将变量声明为异步函数(或 Promise)的成功返回值?

当给定一个函数时,有可能将变量声明为

let foo: ReturnType<typeof myFunc>;

如果函数是async,

let asyncFoo: ReturnType<typeof myAsyncFunc>;

上面的变量将输入为Promise<{...}>,这很接近,但不是我想要的。我想获取awaited 值的类型(或传递给.then()回调的值)。这种类型的外观如何?

标签: typescriptpromiseasync-await

解决方案


使用“推断”关键字

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

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

推荐阅读