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

let variable: string | number;

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ámetro id que puede ser un string o un number.
  • 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.

function formatInput(input: string | number): string {
    // Tu código aquí
}

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 combina Person y Employee.
  • La variable emp debe tener tanto la propiedad name como employeeId.

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.

© Copyright 2024. Todos los derechos reservados