Skip to content

Lección 82 — Type Aliases

Los type aliases permiten crear un nombre para cualquier tipo. Con type puedes definir alias para tipos primitivos, uniones, objetos, funciones, tuplas y más.

type ID = number;
type Nombre = string;
let usuarioId: ID = 123;
let userName: Nombre = 'Ana';
type Estado = 'activo' | 'inactivo' | 'pendiente';
type ResultadoAPI = 'éxito' | 'error';
type Producto = {
id: number;
nombre: string;
precio: number;
disponible: boolean;
};
const laptop: Producto = {
id: 1,
nombre: 'Laptop Gamer',
precio: 1299.99,
disponible: true
};
type Callback = (error: Error | null, datos: any) => void;
type OperacionMatematica = (a: number, b: number) => number;
const sumar: OperacionMatematica = (a, b) => a + b;
type ResultadoApi<T> = {
exito: boolean;
datos: T;
mensaje: string;
};
type Usuario = { id: number; nombre: string };
type ProductoConPrecio = { id: number; nombre: string; precio: number };
const respuestaUsuario: ResultadoApi<Usuario> = {
exito: true,
datos: { id: 1, nombre: 'Ana' },
mensaje: 'Usuario encontrado'
};
// Alias para tipos complejos
type Coordenadas = [latitud: number, longitud: number, altitud?: number];
type UsuarioAutenticado = {
usuario: string;
token: string;
permisos: ('leer' | 'escribir' | 'admin')[];
};
type TransformarTexto = (texto: string) => string;
// Composición con &
type Persona = {
nombre: string;
edad: number;
};
type Contacto = {
email: string;
telefono?: string;
};
type UsuarioCompleto = Persona & Contacto;
// Uso de genéricos con type
type Par<A, B> = { primero: A; segundo: B };
const par: Par<string, number> = { primero: 'edad', segundo: 25 };

Define un type alias RespuestaAPI<T> que tenga las propiedades:

  • ok: boolean
  • status: number
  • data: T
  • mensaje?: string

Luego crea un type Usuario con id: number, nombre: string y email: string. Finalmente declara una variable respuesta de tipo RespuestaAPI<Usuario[]> (array de usuarios) y asígnale un valor de ejemplo.

A diferencia de interface, un type alias no se puede extender con extends. Pero puedes componer con & (intersección). Tampoco puedes reabrir un type para añadirle propiedades (declaration merging).

Usa type para uniones, intersecciones, tuplas, tipos condicionales y tipos primitivos. Para objetos que representan la forma de datos persistentes, considera usar interface (ver lección 85).