如何解决如何在Typescript中用`n`个不同的参数类型编写一个可变参数函数?
我想编写一个合并一个或多个转换函数的 TypeScript 函数。
转换函数具有以下签名:
type Transform<T0,T1> = {
(arg: T0): T1 | Promise<T1>;
}
合并函数有这个签名:
type Merge = {
<T0,T1>(f0: Transform<T0,T1>): Transform<T0,T1>;
<T0,T1,T2>(f0: Transform<T0,T1>,f1: Transform<T1,T2>): Transform<T0,T2>;
<T0,T2,T3>(f0: Transform<T0,T2>,f2: Transform<T2,T3>):
Transform<T0,T3>;
// ...
};
有没有办法编写该类型以便函数可以接受任意数量的参数?
编辑:
我想添加一些示例: 考虑这些函数:
function toNumber(x: string): number {
return parseFloat(x);
}
function toString(x: number): string {
return `${x}`;
}
这个调用是正确的:merge(toNumber,toString)
。
但是如果我们尝试调用 merge(toNumber,toNumber)
,编译器
应该发出错误,因为第一个参数返回一个数字,而
第二个应该接受一个数字,而不是一个字符串。
这就是为什么在函数签名中使用 any
不起作用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。