A linguagem JavaScript se beneficiou de alguns novos recursos realmente incríveis nos últimos anos, incluindo funções de seta, o operador de propagação e valores de argumento de função padrão. Mesmo que seu navegador ainda não ofereça suporte às adições de sintaxe da API JavaScript propostas, o senhor pode usar uma ferramenta como o Babel em seu aplicativo Node.js para aproveitá-las hoje.


Um dos meus novos recursos favoritos do JavaScript é a desestruturação de objetos. Se o senhor não estiver familiarizado com a desestruturação do JavaScript, ela basicamente fornece uma sintaxe mais curta para extrair o valor de uma chave de objeto sem a confusão da notação de ponto:



// A sample object
const myObject = { x: 1, y: 2 };

// Destructuring
const { x, y } = myObject;
// x is 1, y is 2


A sintaxe básica da desestruturação é bastante simples, mas usar a desestruturação com argumentos de função pode ser um pouco mais difícil quando os valores desses argumentos devem ter valores padrão. A seguir, uma função com argumentos que têm valores padrão:



function myFunction(text = "", line = 0, truncate = 100) {

    // With default values, we can avoid a bunch of:
    text = text || "";
    line = line || 0;
    truncate = truncate || 100;
}


Independentemente da linguagem, se uma função receber mais de ~3 parâmetros, provavelmente é melhor passar um nome de objeto options ou config que contém possíveis chaves/valores; o equivalente seria o seguinte:



function myFunction(config) {

}

// Usage
myFunction({
    text: "Some value",
    line: 0,
    truncate: 100
})


Mas e se o senhor quiser usar a desestruturação nos argumentos da função JavaScript? A seguinte assinatura de função se tornaria:



function myFunction({ text, line, truncate }) {

}


Se quiser definir padrões na configuração da função, o senhor usaria o seguinte:



function myFunction({ 
  text = "", 
  line = 0, 
  truncate = 100 
} = {}) {

 // Even if the passed in object is missing a given key, the default is used!
}



Definir um padrão com = { } é importante; sem padrão, o exemplo a seguir daria erro:



TypeError: Cannot destructure property `key` of 'undefined' or 'null'


A desestruturação é um recurso incrível da linguagem, mas pode gerar confusão e até mesmo erros. Esperamos que as noções básicas fornecidas neste guia possam ajudá-lo a navegar usando a desestruturação do JavaScript com funções!