Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Erro com na leitura de objeto

Olá, estava estudando a sintaxe de espalhamento para arrays em objetos e me deparei com o seguinte erro → TypeError: Cannot read properties of undefined (reading 'numero') e ainda não consegui corrigi-lo, desde já agradeço qualquer sugestão.

const cliente = {
    nome: "João",
    idade: 24,
    email: "joao@firma.com",
    telefone: ["112233445566", "998877665544"],
}

cliente.enderecos = [
    {
        rua: "R. Joseph Climper",
        numero: 1337,
        apartamento: true,
        complemento: "ap 934",
    }
]

function ligaParaCliente (telefonecomercial, telefonecomercial1){
    console.log(`Ligando para ${telefonecomercial}`);
    console.log(`Ligando para ${telefonecomercial1}`);
}


ligaParaCliente(...cliente.telefone);


const encomenda = {
    destinatario: cliente.nome,
    rua: cliente.enderecos[0].rua,
    numero: cliente.enderecos[1].numero,
  };
  
  console.log(encomenda);

TypeError: Cannot read properties of undefined (reading 'numero')

1 resposta
solução!

Leydson,

Eu processei aqui na minha máquina e descobri um problema.

Sua lista de endereços "cliente.enderecos" possui somente 1 (um) endereço.

E você está buscando a rua da posição 0 (zero) da array e o numero da posição 1 (um) da array (este não existe). Veja:

const encomenda = {
    destinatario: cliente.nome,
    rua: cliente.enderecos[0].rua,
    numero: cliente.enderecos[1].numero,
  };

Para comprovar o erro, você pode adicionar mais um item na sua array, desta forma:

cliente.enderecos = [
  {
    rua: "R. Joseph Climper",
    numero: 1337,
    apartamento: true,
    complemento: "ap 934",
  },
  {
    rua: "R. Teste",
    numero: 123,
    apartamento: false,
    complemento: "casa 5",
  },
];

Espalhamento

Funcionou, mas...

... é claro que ele vai pegar a rua do endereço na posição 0 (zero) e o número da posição 1 (um)... err... com certeza isso está errado também...

... para corrigir este erro de regra de negócio é simples, coloque sua encomenda buscando sempre no mesmo item de array:

const n_encomenda = 0;

const encomenda = {
  destinatario: cliente.nome,
  rua: cliente.enderecos[n_encomenda].rua,
  numero: cliente.enderecos[n_encomenda].numero,
};

Espalhamento 2

Agora não tem mais erro.

Espero ter ajudado e se sua dúvida foi sanada, por favor, feche o tópico e me pontue, valew?

Obrigado.

[]'s,

Fabio I.