En TypeScript, los tipos unión e intersección son herramientas poderosas que permiten una mayor flexibilidad y precisión en la definición de tipos. Estos conceptos son fundamentales para aprovechar al máximo el sistema de tipos de TypeScript.
Tipos Unión
¿Qué es un Tipo Unión?
Un tipo unión permite que una variable pueda ser de uno de varios tipos. Se define utilizando el operador |
.
Sintaxis
En este ejemplo, variable
puede ser de tipo string
o number
.
Ejemplo Práctico
function printId(id: string | number) { console.log(`El ID es: ${id}`); } printId(101); // El ID es: 101 printId("202"); // El ID es: 202
Explicación
- La función
printId
acepta un parámetroid
que puede ser unstring
o unnumber
. - Esto permite que la función sea más flexible y pueda manejar diferentes tipos de entrada.
Ejercicio Práctico
Ejercicio:
Escribe una función formatInput
que acepte un parámetro que puede ser un string
o un number
. Si el parámetro es un number
, la función debe devolver el número como una cadena con dos decimales. Si el parámetro es un string
, debe devolver la cadena en mayúsculas.
Solución:
function formatInput(input: string | number): string { if (typeof input === "number") { return input.toFixed(2); } else { return input.toUpperCase(); } } console.log(formatInput(123.456)); // "123.46" console.log(formatInput("hello")); // "HELLO"
Tipos Intersección
¿Qué es un Tipo Intersección?
Un tipo intersección combina múltiples tipos en uno solo. Una variable de tipo intersección debe cumplir con todos los tipos combinados. Se define utilizando el operador &
.
Sintaxis
interface Person { name: string; } interface Employee { employeeId: number; } type EmployeePerson = Person & Employee;
En este ejemplo, EmployeePerson
debe tener todas las propiedades de Person
y Employee
.
Ejemplo Práctico
interface Person { name: string; } interface Employee { employeeId: number; } type EmployeePerson = Person & Employee; const emp: EmployeePerson = { name: "John Doe", employeeId: 1234 }; console.log(emp);
Explicación
EmployeePerson
es un tipo que combinaPerson
yEmployee
.- La variable
emp
debe tener tanto la propiedadname
comoemployeeId
.
Ejercicio Práctico
Ejercicio:
Define dos interfaces, Car
y Electric
, y crea un tipo intersección ElectricCar
que combine ambas. Luego, crea una variable de tipo ElectricCar
y asígnale valores apropiados.
interface Car { make: string; model: string; } interface Electric { batteryCapacity: number; } type ElectricCar = Car & Electric; const myElectricCar: ElectricCar = { // Tu código aquí };
Solución:
interface Car { make: string; model: string; } interface Electric { batteryCapacity: number; } type ElectricCar = Car & Electric; const myElectricCar: ElectricCar = { make: "Tesla", model: "Model S", batteryCapacity: 100 }; console.log(myElectricCar);
Resumen
- Tipos Unión (
|
): Permiten que una variable sea de uno de varios tipos. - Tipos Intersección (
&
): Combinan múltiples tipos en uno solo, requiriendo que la variable cumpla con todos los tipos combinados.
Estos conceptos son esenciales para escribir código TypeScript flexible y seguro. En el próximo módulo, profundizaremos en otros tipos avanzados que te permitirán aprovechar aún más el sistema de tipos de TypeScript.
Curso de TypeScript
Módulo 1: Introducción a TypeScript
- ¿Qué es TypeScript?
- Configuración del Entorno de TypeScript
- Tipos Básicos
- Anotaciones de Tipo
- Compilando TypeScript
Módulo 2: Trabajando con Tipos
Módulo 3: Tipos Avanzados
Módulo 4: Funciones y Módulos
- Tipos de Función
- Parámetros Opcionales y Predeterminados
- Parámetros Rest
- Módulos y Espacios de Nombres
- Decoradores
Módulo 5: Programación Asíncrona
Módulo 6: Herramientas y Mejores Prácticas
- Linting y Formateo
- Pruebas de Código TypeScript
- TypeScript con Webpack
- TypeScript con React
- Mejores Prácticas