打字稿-更改函数的返回类型

时间:2019-01-22 17:23:35

标签: typescript

我想重写一个更改其返回类型的函数。我发现了这种方法,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 个答案:

答案 0 :(得分:0)

您可以创建一个在rest参数中使用条件类型和元组的类型,以执行所需的操作:

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