Quais são os benefícios de usar a sintaxe de spread e como ela é diferente da sintaxe de rest?
Topics
JavaScript
Edit on GitHub
A sintaxe spread do ES2015 é muito útil quando programando em um paradigma funcional, pois podemos facilmente criar cópias de arrays ou objetos sem recorrer a Object.create
, slice
, ou uma função de biblioteca. Esse recurso de linguagem é frequentemente utilizado em projetos Redux e RxJS.
function putDookieInAnyArray(arr) {return [...arr, 'dookie'];}const result = putDookieInAnyArray(['I', 'really', "don't", 'like']); // ["I", "really", "don't", "like", "dookie"]const person = {name: 'Todd',age: 29,};const copyOfTodd = { ...person };
A sintaxe rest do ES2015 oferece uma maneira mais fácil de incluir um número arbitrário de argumentos para serem passados para uma função. É como uma inversão da sintaxe spread, pegando dados e colocando-os em um array em vez de desempacotar um array de dados, e funciona em argumentos de função, bem como em atribuições de desconstrução de arrays e objetos.
function addFiveToABunchOfNumbers(...numbers) {return numbers.map((x) => x + 5);}const result = addFiveToABunchOfNumbers(4, 5, 6, 7, 8, 9, 10); // [9, 10, 11, 12, 13, 14, 15]const [a, b, ...rest] = [1, 2, 3, 4]; // a: 1, b: 2, rest: [3, 4]const { e, f, ...others } = {e: 1,f: 2,g: 3,h: 4,}; // e: 1, f: 2, others: { g: 3, h: 4 }