Tipos Personalizados

Los tipos personalizados en TypeScript te permiten crear tus propios tipos de datos personalizados. Son útiles cuando deseas combinar varios tipos de datos en un tipo único y darle un nombre significativo.

Aquí tienes un ejemplo de un tipo personalizado:

// Tipo personalizado para coordenadas
type Coordinate = {
  x: number;
  y: number;
};

// Función que calcula la distancia entre dos coordenadas
function calculateDistance(pointA: Coordinate, pointB: Coordinate): number {
  const dx = pointB.x - pointA.x;
  const dy = pointB.y - pointA.y;

  return Math.sqrt(dx * dx + dy * dy);
}

// Usando el tipo personalizado Coordinate
const point1: Coordinate = { x: 0, y: 0 };
const point2: Coordinate = { x: 3, y: 4 };

const distance = calculateDistance(point1, point2);

console.log(`Distancia entre los puntos: ${distance}`);

Interfaces

Una interfaz en TypeScript es una forma de definir un contrato o un conjunto de reglas que un objeto debe seguir. Es como un contrato que especifica qué propiedades (campos) y métodos (funciones) debe tener un objeto. Las interfaces se usan comúnmente para definir la forma de los objetos en tu código.

Aquí tienes un ejemplo de una interfaz simple:

// Interfaz para representar un coche
interface Car {
  brand: string;
  model: string;
  year: number;
  startEngine: () => void;
}

// Función que recibe un objeto del tipo Car
function drive(car: Car): void {
  console.log(`Conduciendo ${car.brand} ${car.model} - ${car.year}`);
  car.startEngine();
}

// Implementación de la interfaz Car
const myCar: Car = {
  brand: "Toyota",
  model: "Corolla",
  year: 2022,
  startEngine() {
    console.log("¡Motor encendido!");
  }
};

// Llamada a la función drive con el objeto myCar
drive(myCar);
  1. interface Car { ... }: Define una interfaz llamada Car que describe la estructura esperada de un objeto que representa un coche. Tiene cuatro propiedades: brand (marca), model (modelo), year (año) y startEngine (una función que no recibe argumentos y no retorna nada).
  2. function drive(car: Car): void { ... }: Declara una función llamada drive que recibe un parámetro llamado car del tipo Car. Esta función no retorna nada (void). Muestra en la consola información sobre el coche, incluyendo la marca, el modelo y el año, y luego llama a la función startEngine del objeto car para arrancar el motor.
  3. const myCar: Car = { ... }: Crea un objeto myCar que implementa la interfaz Car. Contiene valores para las propiedades brand, model, year, y la función startEngine. Este objeto representa un coche específico, en este caso, un Toyota Corolla de 2022.
  4. drive(myCar);: Llama a la función drive con el objeto myCar como argumento. Esto resulta en la visualización de la información del coche en la consola y la llamada a la función startEngine del objeto myCar.

Cuándo Usar Interfaces y Tipos Personalizados