TS2556

A spread argument must either have a tuple type or be passed to a rest parameter.

Broken Code ❌

function sum(a: number, b: number): number {
  return a + b;
}
 
console.log(sum(1, ...[2, 3, 4, 5]));

Fixed Code ✔️

When calling a function using the spread syntax (...), we have to ensure that the called function uses a rest parameter:

function sum(a: number, ...b: number[]): number {
  return a + b.reduce((c, d) => c + d);
}
 
console.log(sum(1, ...[2, 3, 4, 5]));