给定函数类型:
interface Fun {
(a: string, b: number): void
}
以下场景中有一个额外的参数:
const foo = (ctx: any, a: string, b: number) => {}
将其余的参数传递为RestParameters
而不是再次输入它们变得很简单。
例如,使用一个实现Fun
的函数并调用foo
,该函数采用类似的参数:
以下作品:
const bar: Fun = (a, b) => {
foo("calling from bar", a, b);
}
但是当使用rest参数并传播冗余的参数时,类型信息会丢失:
const bar2: Fun = (...params) => {
// error here params is of type any[]
foo("calling from bar2", ...params);
}
至少,这应该有效:
const bar3: Fun => (...params) => {
if (
params.length > 1
&& typeof params[0] === "string"
&& typeof params[1] === "number"
) {
foo("calling from bar3", ...params);
}
}
Try it in TypeScript playground
是否有可能在TypeScript中为休息参数获取元组类型[string, number]
?如果是这样,怎么样?如果没有,我错过了什么吗?