Начнём с основы
Rest (...name) собирает «оставшиеся» аргументы функции в настоящий массив.
Подробности
Пишется в конце списка параметров. В отличие от устаревшего arguments, это настоящий Array с методами вроде map/reduce.
function sum(...numbers) {
return numbers.reduce((acc, curr) => acc + curr, 0);
}
console.log(sum(1, 2, 3, 4));
Можно комбинировать: function f(first, ...rest). Не путайте с spread: rest собирает, spread разворачивает.
Итог
Rest — удобный способ принять неизвестное число аргументов как массив.