Interfaces y Tipos en TypeScript: Guía Completa

Creación de interfaces

Las interfaces en TypeScript se utilizan para definir la forma de un objeto. Puedes especificar qué propiedades debe tener un objeto y sus tipos.

Aquí tienes un ejemplo

typescript
interface Usuario {
  nombre: string;
  edad: number;
  correo?: string; // Propiedad opcional
}

const usuario1: Usuario = {
  nombre: "Urian",
  edad: 25,
  correo: "urian@example.com"
};

const usuario2: Usuario = {
  nombre: "Luis",
  edad: 30
};

console.log(usuario1);
//Salida: { nombre: 'Urian', edad: 25, correo: 'urian@example.com' }
console.log(usuario2);
// Salidad: { nombre: 'Luis', edad: 30 }

Uso de tipos personalizados

Además de las interfaces, TypeScript permite definir tipos personalizados para facilitar la reutilización y el mantenimiento del código.

Aquí tienes un ejemplo

typescript
type Producto = {
  id: number;
  nombre: string;
  precio: number;
};

const producto: Producto = {
  id: 1,
  nombre: "Laptop",
  precio: 999.99
};

console.log(`Producto: ${producto.nombre}, Precio: $${producto.precio}`);
// Salida: Producto: Laptop, Precio: $999.99

Comparación entre interfaces y tipos

Tanto las interfaces como los tipos personalizados permiten definir la forma de los objetos, pero existen algunas diferencias clave:

Extensibilidad

Las interfaces se pueden extender mediante la herencia, mientras que los tipos no. Esto es útil para crear jerarquías más complejas.

typescript
interface Empleado extends Usuario {
  salario: number;
}

const empleado: Empleado = {
  nombre: "Carlos",
  edad: 28,
  salario: 50000
};

Uniones

Los tipos permiten definir uniones entre varios tipos, mientras que las interfaces no tienen esta capacidad.

typescript
type ID = string | number;

const id1: ID = "abc123";
const id2: ID = 456;
  Resumen

Utiliza interfaces (interface) cuando necesites definir la estructura de objetos que pueden ser extendidos, y tipos (type) para combinar varios tipos en un solo valor. Ambas herramientas en TypeScript son clave para construir aplicaciones más seguras, flexibles y organizadas.