我想用映射函数替换函数的返回类型。
它应该是这样的:
// typescript 2.9, so no tuple arguments support yet.
type WithNewReturnType<
F1 extends (...args: T[]) => V,
F2 extends (arg: V) => MV,
T,
V,
MV
> = ((...args: T[]) => MV);
// use case
const chain = <F1, F2>(f1: F1, f2: F2): WithNewReturnType<F1, F2> =>
(...args) => f2(f1(...args));
F1的返回类型应与F2的参数类型匹配。
上述代码有两个问题:
-
它表示f1和f2未使用。
-
它需要5个参数而不是2个,比如withNewReturnType。
如何只用两个参数来保持约束,
R<F1> === A<F2>
?