Что такое spread и rest?
Операторы spread и rest в JavaScript записываются одинаково в виде трех точек, но выполняют противоположные по смыслу задачи в зависимости от контекста их применения. Они значительно упрощают манипуляции с наборами данных и коллекциями.
Оператор spread выполняет роль распаковщика, разворачивая итерируемые объекты, такие как массивы или строки, в отдельные элементы. С его помощью можно легко объединять массивы, создавая новые коллекции из элементов старых.
Также spread активно применяется для клонирования и дополнения объектов новыми ключами и значениями в литеральной форме, заменяя устаревшие методы объединения данных.
Оператор rest, напротив, выполняет роль сборщика, который объединяет множество разрозненных аргументов в единый массив. Это особенно полезно при создании функций с переменным числом параметров.
Когда точное количество аргументов заранее неизвестно, их удобно перехватить через rest-параметр в сигнатуре функции, чтобы обработать в виде стандартного массива.
Тот же механизм успешного сбора данных применяется и внутри деструктуризации. Там можно забрать первый элемент массива в отдельную переменную, а оставшуюся часть упаковать в новый массив с помощью rest-синтаксиса.