Skip to main content

Passagem de parâmetros

  • Passagem de parâmetros

Explicação:

No TypeScript, ao fazer a atribuição obj1 = obj2, não estamos criando uma cópia dos valores do obj2 para o obj1. Em vez disso, estamos fazendo com que ambos os objetos apontem para a mesma referência de memória. Isso significa que qualquer alteração feita em uma propriedade de um objeto também será refletida no outro objeto, pois eles compartilham a mesma referência.

Para alterar os valores dentro de cada objeto de forma independente, é necessário modificar as propriedades individualmente. Por exemplo, se quisermos alterar a propriedade nome do obj1, podemos fazer obj1.nome = "Novo nome". Dessa forma, apenas o obj1 terá o valor da propriedade nome alterado.

Outra opção é usar o método Object.assign() para copiar as propriedades de um objeto para outro. Por exemplo, podemos fazer Object.assign(obj1, obj2) para copiar todas as propriedades do obj2 para o obj1. Isso criará uma cópia das propriedades, permitindo que sejam modificadas independentemente.

É importante ressaltar que essa forma de atribuição no TypeScript difere do comportamento no C#. No C#, a atribuição obj1 = obj2 cria uma cópia dos valores do obj2 para o obj1, em vez de compartilhar a mesma referência de memória.

Código de exemplo:

// Exemplo de atribuição de objetos no TypeScript

// Definindo o objeto obj2
const obj2 = { nome: "Objeto 2" };

// Atribuindo obj2 para obj1
let obj1 = obj2;

// Modificando a propriedade nome de obj1
obj1.nome = "Novo nome";

console.log(obj1); // Output: { nome: "Novo nome" }
console.log(obj2); // Output: { nome: "Novo nome" } - obj2 também foi alterado

// Copiando as propriedades de obj2 para obj1 usando Object.assign()
obj1 = Object.assign({}, obj2);

// Modificando a propriedade nome de obj1
obj1.nome = "Outro nome";

console.log(obj1); // Output: { nome: "Outro nome" }
console.log(obj2); // Output: { nome: "Novo nome" } - obj2 não foi alterado