Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

117
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda