展开运算符 - 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];