Sobes.tech
Junior

Qual é a diferença entre os operadores spread e rest?

sobes.tech IA

Resposta da IA

O operador de espalhamento (...) expande objetos iteráveis (arrays, strings) em elementos individuais, sendo frequentemente usado para criar cópias de arrays, mesclar objetos ou passar argumentos para funções. O operador de rest (...) recolhe os elementos restantes num único array, sendo usado na destruturação ou na definição de funções para recolher argumentos.

Exemplos de uso do spread:

// Criar uma cópia de um array
const arr1 = [1, 2, 3];
const arr2 = [...arr1]; // arr2 = [1, 2, 3]

// Combinar arrays
const arr3 = [4, 5];
const combined = [...arr1, ...arr3]; // combined = [1, 2, 3, 4, 5]

// Passar argumentos para uma função
function sum(a, b, c) {
  return a + b + c;
}
const numbers = [1, 2, 3];
const result = sum(...numbers); // result = 6

Exemplos de uso do rest:

// Recolher os elementos restantes ao fazer destruturação de um array
const [first, ...restOfArray] = [1, 2, 3, 4]; // first = 1, restOfArray = [2, 3, 4]

// Recolher argumentos numa função
function logArguments(arg1, ...restArgs) {
  console.log(arg1); // primeiro argumento
  console.log(restArgs); // array dos restantes argumentos
}
logArguments(1, 2, 3, 4); // Vai mostrar 1 e [2, 3, 4]

A principal diferença reside na sua finalidade: spread expande, rest agrupa.