展开运算符 - TypeScript
Spread Operator - TypeScript
我正在尝试将数组作为参数传递给 Spread 运算符,但出了点问题。
function addThreeNumbers(x:number, y:number, z:number){
console.log(x+y+z)
}
const args: number[] = [2,6,4]
addThreeNumbers(...args)
正如错误所说:
A spread argument must either have a tuple type or be passed to a rest parameter.
所以要么使 args
成为一个元组,例如使用 as const
这样它就不会扩大到 number[]
:
const args = [2, 6, 4] as const;
或者将参数改成 rest 参数:
function addThreeNumbers(...args: number[]) {
console.log(args[0] + args[1] + args[2])
// or args.reduce((a, b) => a + b, 0)
}
为了 TypeScript 正确预测哪些参数类型将传播到参数中,您必须将 args
变量类型更改为元组,如下所示:
const args: [number, number, number] = [2, 6, 4];
我正在尝试将数组作为参数传递给 Spread 运算符,但出了点问题。
function addThreeNumbers(x:number, y:number, z:number){
console.log(x+y+z)
}
const args: number[] = [2,6,4]
addThreeNumbers(...args)
正如错误所说:
A spread argument must either have a tuple type or be passed to a rest parameter.
所以要么使 args
成为一个元组,例如使用 as const
这样它就不会扩大到 number[]
:
const args = [2, 6, 4] as const;
或者将参数改成 rest 参数:
function addThreeNumbers(...args: number[]) {
console.log(args[0] + args[1] + args[2])
// or args.reduce((a, b) => a + b, 0)
}
为了 TypeScript 正确预测哪些参数类型将传播到参数中,您必须将 args
变量类型更改为元组,如下所示:
const args: [number, number, number] = [2, 6, 4];