A veces una variable puede ser de más de un tipo. Un ID podría ser un número (1234) o un string ("ABC-123"). Un valor de un formulario podría ser un string o null.
Para esto existen los union types:
El operador | significa "o". string | number se lee: "string o number".
Los union types brillan en funciones que deben aceptar varios tipos:
Si el tipo es string | number, TypeScript solo te deja usar operaciones que funcionen con ambos tipos:
TypeScript te protege: .toUpperCase() solo existe en strings. Si valor fuera un número, el código explotaría. Necesitas verificar el tipo primero.
Para usar métodos específicos de un tipo, primero verifica con typeof:
Dentro del if, TypeScript "estrecha" el tipo. Esto se llama narrowing y lo veremos en profundidad en la siguiente lección.
Un patrón muy común es representar la ausencia de un valor:
Esto es más explícito que undefined — le dice al lector "este valor puede no existir intencionalmente".
Puedes guardar union types en type aliases para reutilizarlos:
Crea una función formatearID que:
id de tipo string | number"#" seguido del número (ej: "#42")stringPrueba con ambos tipos e imprime los resultados.
Los union types son una de las features más poderosas de TypeScript. Te permiten modelar la realidad: a veces un dato puede ser una cosa u otra, y TypeScript te obliga a manejar ambos casos.