Оператор spread використовують для розширення, розпакування чи копіювання значень масивів, об'єктів або інших ітерабельних об'єктів в нові структури даних. Його синтаксис - це три крапки ... перед структурою, яку потрібно "розпорошити".
Операція spread для масивів
За допомогою ... (три крапки) можна "розпорошити" елементи масиву.
Якщо розпорошувати обʼєкти і будуть властивості з одноковою назвою, то буде перезаписана і застосована остання вказана властивість. Цей підхід часто використовують на практиці.
Передача аргументів функції
Spread також можна використовувати для передачі аргументів у функцію.
У прикладі "розпорошується" масив у переданих аргументах функції - кожен елемент це окремий аргумент. тобто summ(...[1, 2, 3]) це те ж саме, що і summ(1, 2, 3).
Rest
Оператор rest використовують для збору аргументів в масив або збору лишніх аргументів в функцію у вигляді масиву.
Використання rest для збору аргументів функції в масив
У цьому прикладі ...elseArgs збирає всі аргументи, що залишилися після a і b, в масив elseArgs. Тобто операція rest збирає решту усіх аргументів, а тому повинна бути останньою у підписі функції, інакше виникне помилка.
Можна винести всі аргументи в масив.
Ім'я параметра може бути будь-яким. Найчастіше його називають args, restArgs або otherArgs - скорочено від arguments.
Операція ... (rest) збирає групу незалежних елементів у нову колекцію.
Операція ... (spread) розділяє колекцію на незалежні елементи.
Синтаксис однаковий, але відрізнити їх просто:
spread - коли ... розташовані у правій частині операції присвоювання
rest - коли ... розташовані в лівій частині присвоєння.