代码之家  ›  专栏  ›  技术社区  ›  tru7

异步方法的返回类型(已解析)

  •  1
  • tru7  · 技术社区  · 6 年前

    令人惊讶的是,typescript可以为函数的返回类型或返回类型为<gt;的类方法提供

    class Foo{
        bar(){ return {one:1, two:2};}
    }
    
    type  typeBar = ReturnType<Foo['bar']>;
    

    但是,如果方法是异步的,是否可以获得已解决的承诺的类型?

    class Foo{
        async asyncBar() { return new Promise((resolve) => resolve({ one: 1, two: 2 }));}
    }
    type  typeBar = ReturnType<Foo['asyncBar']>; // the type here is Promise
    

    编辑 那么,从foo['asyncbar']中得到1:number,2:number的运算符是什么?

    1 回复  |  直到 6 年前
        1
  •  3
  •   Titian Cernicova-Dragomir    6 年前

    您可以定义一个类型

    type Unpack<T> = T extends Promise<infer U> ? U : T;
    

    然后使用

    class Foo {
        async asyncBar() { return new Promise<{one:1, two:2}>((resolve) => resolve({ one: 1, two: 2 }));}
    }
    
    type Unpack<T> = T extends Promise<infer U> ? U : T;
    type typeBar = Unpack<ReturnType<Foo["asyncBar"]>>;