我想重写一个改变返回类型的函数。我发现了这种方法, 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>);
可以生成一个类型,该类型使用rest参数中的条件类型和元组来执行所需的操作:
type CopyFunction<TFn, TR> = TFn extends (...a: infer A) => any ? (...a:A) => TR: never type Test22 = CopyFunction<Test, number | Promise<number>>;