Що таке spread і rest?
Оператори spread і rest в JavaScript записуються однаково у вигляді трьох крапок, але виконують протилежні за змістом завдання залежно від контексту їх застосування. Вони значно спрощують маніпуляції з наборами даних та колекціями.
Оператор spread виконує роль розпакувача, розгортаючи ітеровані об'єкти, такі як масиви чи рядки, в окремі елементи. З його допомогою можна легко об'єднувати масиви, створюючи нові колекції з елементів старих.
Також spread активно застосовується для клонування та доповнення об'єктів новими ключами та значеннями в літеральній формі, замінюючи застарілі методи об'єднання даних.
Оператор rest, навпаки, виконує роль збиральника, який об'єднує безліч розрізнених аргументів у єдиний масив. Це особливо корисно при створенні функцій зі змінною кількістю параметрів.
Коли точна кількість аргументів заздалегідь невідома, їх зручно перехопити через rest-параметр у сигнатурі функції, щоб обробити у вигляді стандартного масиву.
Той самий механізм успішного збору даних застосовується і всередині деструктуризації. Там можна забрати перший елемент масиву в окрему змінну, а решту запакувати в новий масив за допомогою rest-синтаксису.