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

305
Visualizações
¿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 Respostas
Responde à pergunta

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 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