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

118
Visualizações
Cómo comparar 2 clases heredadas en Typescript

Considere que tenemos 2 clases Animal y Dog . Aquí la clase Dog se hereda de la clase Animal .

Necesito verificar el tipo de estos objetos.

Cómo puedo conseguir esto

 class Animal {} class Dog extends Animal {} //This obj can have both classes const mixedObj: Animal | Dog = new Dog(); //---> here When i compare mixedObj with Animal class i need to get `false` but `true` is returned console.log(mixedObj instanceof Animal);// returns: `true` console.log(mixedObj instanceof Dog);// returns: true

tiene alguna otra forma de resolver este problema...?

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

0

Fundamentalmente, está preguntando sobre el valor de tiempo de ejecución de mixedObj , que es una cosa de JavaScript en lugar de una cosa de TypeScript.

instanceof Animal será true para cualquier objeto que tenga Animal.prototype en cualquier parte de su cadena de prototipos (normalmente porque fue creado por el constructor Animal , directa o indirectamente [por ejemplo, a través de Dog ]). Si desea ver si mixedObj contiene un Dog , específicamente , y no un Animal , debe mirar la propiedad del constructor :

 class Animal {} class Dog extends Animal {} //This obj can have either class const mixedObj/*: Animal | Dog*/ = new Dog(); console.log(mixedObj.constructor === Animal);// returns: `false` console.log(mixedObj.constructor === Dog);// returns: `true`

Enlace del patio de recreo

Pero , eso es generalmente un antipatrón. Una mejor manera, particularmente porque funcionará con TypeScript en tiempo de compilación, es darle a Dog alguna característica que Animal no tiene y probar esa característica:

 class Animal { } class Dog extends Animal { bark() { console.log("Woof!"); } } //This obj can have either class const mixedObj/*: Animal | Dog*/ = new Dog(); console.log("bark" in mixedObj); // returns: `true` (would be `false` for an `Animal`) if ("bark" in mixedObj) { mixedObj.bark(); // No error, because TypeScript knows that it's a `Dog` }

Enlace del patio de recreo

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