代码之家  ›  专栏  ›  技术社区  ›  Pedro Durek

typescript-更改函数返回类型

  •  0
  • Pedro Durek  · 技术社区  · 7 年前

    我想重写一个改变返回类型的函数。我发现了这种方法, TypeScript: How to wrap a function, changing its return type? . 不过,我想要一个更通用的。

    type Test = (
        a: string,
        b: string,
        c: number,
    ) => string | Promise<string>;
    
    type Test2 = (
        a: string,
        b: string,
        c: number,
    ) => number | Promise<number>;
    
    

    我期望的是:

    // CopyFunction(Function, Return)
    type Test2 = CopyFunction(Test, number | Promise<number>);
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Titian Cernicova-Dragomir    7 年前

    可以生成一个类型,该类型使用rest参数中的条件类型和元组来执行所需的操作:

    type CopyFunction<TFn, TR> = TFn extends (...a: infer A) => any ? (...a:A) => TR: never    
    type Test22 = CopyFunction<Test, number | Promise<number>>;
    
    推荐文章