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

170
Vistas
La mejor manera de convertir un objeto en un valor de enumeración de TypeScript

¿Existe una manera fácil/mejor práctica de convertir any valor en una enumeración de TypeScript y lanzar una excepción si no hay ningún valor?

Como ejemplo

Tiene un objeto de solicitud expresa y está utilizando el valor query.option . Su aplicación sabe que solo tiene dos estados válidos a|b. Sin embargo, la realidad de Internet y el objeto de solicitud es que pueden ser muchas cosas (indefinido, a, b, foo).

 enum OPTIONS_ENUM { a = 'a', b = 'b' } function handleRequest(req: Request): OPTIONS_ENUM { // This will error because query.option is an any return OPTIONS_ENUM[req.query?.option] }

Lo que he estado haciendo parece un poco detallado. Tengo una función de "transmisión" al lado de cada enumeración que arrojará si ENUM no tiene un valor.

 function castToOptionsEnum(option: any): OPTIONS_ENUM { if (!Object.values(OPTIONS_ENUM)?.includes(option)) { throw new Error(`Invalid Value for option, must be one of ${Object.values(OPTIONS_ENUM)}`) } // @ts-ignore return OPTIONS_ENUM[option] } function handleRequest(req: Request) { // This will error because the option query is unknowable return castToOptionsEnum(req.query?.option) }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

puede "simplemente" enviar la option a OPTIONS_ENUM al acceder a OPTIONS_ENUM en castToOptionsEnum :

 function castToOptionsEnum(option: any): OPTIONS_ENUM { if (!Object.values(OPTIONS_ENUM)?.includes(option)) { throw new Error(`Invalid Value for option, must be one of ${Object.values(OPTIONS_ENUM)}`); } return OPTIONS_ENUM[option as OPTIONS_ENUM]; }

Esto eliminará cualquier error de compilación (sugeriría eliminar // @ts-ignore también, ya que "oculta" los errores de compilación, pero eso depende de usted ^^).

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