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

150
Vistas
¿Función que devuelve un tipo de objeto si el objeto es una instancia de x?

Necesito una función de TypeScript para probar si un objeto es de un tipo específico. Si es así, el método debería devolver este tipo. Si no, el método debería devolver indefinido. Quiero usar esta función de la siguiente manera:

 const mySpecialObject = isSpecialObject(source); if (mySpecialObject) { console.log(mySpecialObject.getSpecialProperty()); }

Intenté exportar una función como esta:

 export function isSpecialObject(element: SomeBaseObject): SpecialObject { if (element instanceof SpecialObject) { return element; } return undefined; }

Pero el compilador afirmó que 'indefinido' no es asignable de Type SpecialObject

¿Cómo debería verse una función de TypeScript con este comportamiento?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

¡Quieres una función de predicado de tipo para hacer esto más seguro!

 export function isSpecialObject(element: SomeBaseObject): element is SpecialObject { return element instanceof SpecialObject; } if (isSpecialObject(element)) { // element is safe to use as SpecialObject }

También es posible usar una función de predicado de tipo para varios tipos como este:

 export function isSpecialObject(element: SomeBaseObject): element is SpecialObject | SpecialObjectSub1 | SpecialObjectSub2 { return element instanceof SpecialObject || element instanceof SpecialObjectSub1 || element instanceof SpecialObjectSub2; }
about 4 years ago · Juan Pablo Isaza Denunciar

0

Dado que los dos posibles resultados que devolverá la función son SpecialObject o undefined , se puede agregar undefined como un posible tipo devuelto. como a continuación

 export function isSpecialObject(element: SomeBaseObject): SpecialObject | undefined { if (element instanceof SpecialObject) { return element; } return undefined; }
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