Clonagem profunda
Quando você trabalha com dados aninhados — como um objeto de usuário com endereço, configurações ou histórico —, o operador spread (...) apenas copia a referência dos objetos internos. Isso significa que alterar uma propriedade aninhada na cópia também modifica o original, gerando bugs difíceis de rastrear. Para manipular dados sem efeitos colaterais, você precisa de uma clonagem profunda (deep copy).
O PROBLEMA
Demonstre problema do spread (cópia rasa) com objetos aninhados. Implemente deep copy com JSON.
EXEMPLO
const raso = {...original}; // raso.endereco === original.endereco!
const profundo = JSON.parse(JSON.stringify(original));SOBRE O CONCEITO
A cópia rasa (shallow copy) com spread cria um novo objeto no primeiro nível, mas mantém referências iguais para subobjetos. Por exemplo, const raso = {...original} faz com que raso.endereco === original.endereco seja true, então qualquer mudança em raso.endereco aparece em original. O erro comum é achar que spread faz deep copy. Já JSON.parse(JSON.stringify(original)) realmente clona profundamente, convertendo o objeto em string JSON e depois em um novo objeto. Porém, esse método perde funções, undefined, Symbol e outros tipos não suportados por JSON — por isso não é uma solução universal. Entender essa diferença evita surpresas ao copiar objetos complexos.
RESOLUÇÃO