Desestruturação de objetos

Consideremos o objeto seguinte:

const carro = { 
   marca: 'Opel', 
   modelo: 'Corsa', 
   matricula: '01-02-bb' 
};
const marca = carro.marca; 
const modelo = carro.modelo; 
const matricula = carro.matricula; 
console.log(marca + ", " + modelo + ", " + matricula);

Este código tem um problema porque nos obriga a repetir a expressão carro. 3 vezes para podermos extrair as propriedades do objeto.

Para obviar isso, o javascript ES6 introduziu uma funcionalidade chamada object destructuring ou desestruturação de objetos.

Esta funcionalidade permite-nos extrair as propriedades de um objeto numa única instrução, da seguinte maneira:

const {marca, modelo, matricula} = carro;

O código completo já com object destructuring ficara assim:

const carro = { 
   marca: 'Opel', 
   modelo: 'Corsa', 
   matricula: '01-02-bb' 
};

//Desestruturação do objeto carro:
const {marca, modelo, matricula} = carro; 

console.log(marca + ", " + modelo + ", " + matricula); 

Neste exemplo, extraímos todas as propriedades do objeto carro. No entanto, podemos extrair as propriedades que quisermos:

const {marca} = carro;

Neste caso, extraímos somente a propriedade marca.


Podemos igualmente extrair uma ou mais propriedades e renomeá-las, atribuindo-lhes um alias:

const {marca: m} = carro; 

console.log(m); 

Podemos também extrair objetos dentro de objetos:

const carro = { 
marca: "Opel",
modelo: "Corsa",
matricula: "01-02-bb",
combustivel: {
tipo: "gasoleo",
categoria: "aditivado",
},
};

const { combustivel } = carro;

console.log(combustivel.tipo);