Lección 82 — Type Aliases
🧠 Concepto
Section titled “🧠 Concepto”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.
Sintaxis básica
Section titled “Sintaxis básica”type ID = number;type Nombre = string;
let usuarioId: ID = 123;let userName: Nombre = 'Ana';Union types con alias
Section titled “Union types con alias”type Estado = 'activo' | 'inactivo' | 'pendiente';type ResultadoAPI = 'éxito' | 'error';Objetos con type
Section titled “Objetos con type”type Producto = { id: number; nombre: string; precio: number; disponible: boolean;};
const laptop: Producto = { id: 1, nombre: 'Laptop Gamer', precio: 1299.99, disponible: true};Function types con type
Section titled “Function types con type”type Callback = (error: Error | null, datos: any) => void;type OperacionMatematica = (a: number, b: number) => number;
const sumar: OperacionMatematica = (a, b) => a + b;Genéricos en type
Section titled “Genéricos en type”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'};💻 Ejemplo
Section titled “💻 Ejemplo”// Alias para tipos complejostype 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 typetype Par<A, B> = { primero: A; segundo: B };const par: Par<string, number> = { primero: 'edad', segundo: 25 };📝 Ejercicio
Section titled “📝 Ejercicio”Define un type alias RespuestaAPI<T> que tenga las propiedades:
ok: booleanstatus: numberdata: Tmensaje?: 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.
⚠️ Nota
Section titled “⚠️ Nota”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).