Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

127
Visualizações
Texto mecanografiado: asignación de tipo personalizado por valor

En uno de mis procedimientos, necesito restablecer periódicamente un tipo personalizado, pero noté que en TypeScript (y creo que también en JavaScript), cuando asigno una variable de un tipo personalizado a otra variable del mismo tipo, la asignación es hecho por referencia y no por valor.

Por ejemplo este código:

 type testing = { a: string; b: number; }; let v1: testing = { a: "one", b: 1 }; let v2: testing = { a: "two", b: 2 }; console.log(v1); console.log(v2); v1 = v2; v1.a = "Edited"; console.log(v1); console.log(v2);

genera esta salida

 { a: 'one', b: 1 } { a: 'two', b: 2 } { a: 'Edited', b: 2 } { a: 'Edited', b: 2 }

¿Hay alguna forma de asignarlo por valor sin asignar todas las propiedades del tipo?

(en mi ejemplo, necesito que mi variable v2 permanezca igual a {a: "dos", b: 2})

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Para casos simples como este, puede utilizar el operador de extensión para crear una copia superficial de un objeto.

 type testing = { a: string; b: number; }; let v1: testing = { a: "one", b: 1 }; let v2: testing = { a: "two", b: 2 }; console.log(v1); console.log(v2); // copy all of the top-level keys and values from v2 // into a new object and assign that to v1 v1 = { ...v2 }; v1.a = "Edited"; console.log(v1); console.log(v2);

Tenga en cuenta que hay algunas advertencias aquí. Como lo indica el enlace en el comentario de Tobias S, esto solo hará una copia superficial. Si tiene objetos más complejos, esto causará problemas.

 let v1: testing = { a: "one", b: 1, c: { d: 1 } }; let v2: testing = { a: "two", b: 2, c: { d: 2 } }; v2 = { ...v1 }; // v1.c is the same object as v2.c because we only shallowly // copied, so this assignment is reflected in both v2.cd = 60; console.log(v1); console.log(v2);
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda