Simplifique Assinaturas de Funções com Desestruturação Avançada e Valores Padrão no JavaScript

Simplifique Assinaturas de Funções com Desestruturação Avançada e Valores Padrão no JavaScript

Ao construir funções que recebem objetos de configuração ou dados de APIs, acessar propriedades manualmente torna o código verboso e suscetível a erros. Utilizar a desestruturação diretamente na assinatura do parâmetro permite extrair apenas as variáveis necessárias, renomeá-las se preciso e aplicar valores padrão — garantindo que a função não falhe caso propriedades ou até mesmo o próprio objeto de entrada sejam omitidos (undefined).

JavaScript

// Função que aceita um objeto de configuração com desestruturação avançada
function criarUsuario({
  nome,
  funcao = "Desenvolvedor", // Valor padrão para propriedade
  status: statusAtivo = true, // Renomeia 'status' para 'statusAtivo' e define valor padrão
  redes: { github = "não informado" } = {} // Desestruturação aninhada com objeto padrão
} = {}) { // '= {}' evita erro se o objeto inteiro for omitido na chamada
  return `Usuário: ${nome} | Função: ${funcao} | Ativo: ${statusAtivo} | GitHub: ${github}`;
}

// Exemplo 1: Passando objeto completo
const usuario1 = criarUsuario({
  nome: "Carlos",
  funcao: "Tech Lead",
  status: false,
  redes: { github: "@carlosdev" }
});
console.log(usuario1);
// Output: Usuário: Carlos | Função: Tech Lead | Ativo: false | GitHub: @carlosdev

// Exemplo 2: Passando dados parciais (assumindo valores padrão)
const usuario2 = criarUsuario({ nome: "Mariana" });
console.log(usuario2);
// Output: Usuário: Mariana | Função: Desenvolvedor | Ativo: true | GitHub: não informado

// Exemplo 3: Chamada sem argumentos (graças ao '= {}' no final da assinatura)
const usuario3 = criarUsuario();
console.log(usuario3);
// Output: Usuário: undefined | Função: Desenvolvedor | Ativo: true | GitHub: não informado
  • Fallback no parâmetro principal (= {}): Definir um objeto vazio como valor padrão para a assinatura inteira previne o estouro de exceção TypeError: Cannot destructure property... of 'undefined' caso a função seja chamada sem argumentos.
  • Renomeação de variáveis (status: statusAtivo): Permite reatribuir o nome da propriedade recebida para um identificador mais descritivo ou para evitar conflitos de escopo no corpo da função.
  • Desestruturação aninhada: É possível navegar em estruturas profundas diretamente na entrada (como em redes: { github }), mas lembre-se de atribuir um fallback (= {}) no nível intermediário para evitar falhas se a chave pai for omitida.
  • Ordem independente dos argumentos: Diferente dos parâmetros posicionais tradicionais, funções desestruturadas aceitam os dados em qualquer ordem no objeto passado, tornando a chamada muito mais legível.

Thales de Oliveira Gomes

Thales de Oliveira Gomes é gestor de Tecnologia da Informação, especialista em infraestrutura de redes, computação em nuvem e operações de TI hospitalar, com mais de 18 anos de experiência na área. Graduado em Gestão de TI e pós-graduado em Engenharia de Redes e Telecomunicações, Cloud Computing, Redes de Computadores e Gestão Hospitalar, construiu uma trajetória sólida liderando projetos de alta complexidade, como a implementação e migração para nuvem de sistemas ERP de grande porte. Sua atuação no setor o levou a ser indicado ao prêmio IT Leaders Brasil na categoria Rising Leaders. Além da carreira corporativa e da paixão por tecnologia, Thales é autor independente com mais de 70 obras publicadas sobre redes, segurança da informação, Linux e física, além de criador de conteúdo no blog Vetor Tech e na plataforma CiberDicas. No universo das artes e do entretenimento, atua como produtor de música eletrônica sob o projeto Yknex, cria ilustrações digitais e compartilha walkthroughs de games no YouTube.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *