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

301
Vistas
¿Cuál es una buena manera de encontrar a qué unión pertenece la variable?

He estado tratando de crear una función donde el parámetro de la función es una unión hecha de otras dos uniones. Lo quiero para que, dependiendo de la cadena pasada al parámetro, se active una función diferente en consecuencia. Algo como esto:

 type Type1 = "a" | "b" | "c"; type Type2 = "x" | "y" | "z"; function doSomething(param: Type1 | Type2) { // if param is a part of the "Type1" union functionForTypeOne(); } doSomething("z");

Busqué a través de Internet y los documentos y no pude encontrar una manera de hacer esta verificación de tipo de tiempo de ejecución. Encontré algunas "soluciones" para la verificación de tipos, pero todas fueron escritas para tipos de objetos, no para cadenas y uniones.

En javascript básico, podría crear una matriz const y verificar si la cadena se encuentra dentro de la matriz, así:

 const type1 = ["a", "b", "c"]; const type2 = ["x", "y", "z"]; function doSomething(param) { if (type1.includes(param)) functionForTypeOne(); }

Hacer esto en TypeScript es una especie de solución, pero como necesito crear uniones a partir de estas constantes, se siente muy ineficiente y no me permite usar las funciones de verificación de tipos del lenguaje. Tenía curiosidad por saber si alguien tiene una solución para esto que posiblemente haya pasado por alto, o si esta es la única forma de solucionar mi problema.

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Puede construir las uniones a partir de sus tuplas casi automáticamente y usar un predicado de protección de tipos para recuperar la seguridad de tipos:

 const type1 = ["a", "b", "c"] as const; // Assert as const to infer tuple instead of array string[] const type2 = ["x", "y", "z"] as const; // Automatically get union type from tuple values type Type1 = typeof type1[number]; // ^? "a" | "b" | "c" type Type2 = typeof type2[number]; // ^? "x" | "y" | "z" // Type guard predicate function isIn<T extends readonly string[]>(val: string, arr: T): val is T[number] { return arr.includes(val); } function doSomething(param: Type1 | Type2) { param //^? "a" | "b" | "c" | "x" | "y" | "z" if (isIn(param, type1)) { param //^? "a" | "b" | "c" //functionForTypeOne(); } }

Enlace del patio de recreo

about 4 years ago · Santiago Trujillo 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