Concepto 1 de 12
Alias de tipos
Un alias de tipo da nombre a un tipo que podrías haber escrito en línea. Eso es todo lo que hace — no crea un tipo nuevo, solo una forma más corta de referirse a uno existente. Cada puzle de este sitio es en el fondo un alias de tipo, y por eso la subida empieza aquí.
Un alias es transparente
type ID = string // These two signatures are the same type, not merely compatible ones. declare function save(id: ID): void declare function save(id: string): void
El compilador sustituye el alias allá donde aparece. `ID` y `string` son intercambiables en cualquier posición, y un mensaje de error puede mostrar cualquiera de los dos según cuál sea más corto.
Esto es lo que distingue un alias de una clase o un enum, que sí crean tipos nuevos. Si quieres dos cosas con forma de cadena que el compilador se niegue a confundir, un alias no te lo dará — necesitas un tipo con marca.
Los alias pueden nombrar cualquier cosa
type Point = { x: number; y: number } type Direction = 'up' | 'down' type Handler = (event: string) => void type Pair = [number, number]
Se pueden nombrar uniones, funciones, tuplas y formas de objeto. Una `interface` solo puede describir un objeto, que es la razón práctica por la que casi todo el código a nivel de tipos usa `type`.
El error más común
type Meters = number type Feet = number declare function jump(height: Meters): void jump(12 as Feet) // no error — both are just number
Los alias no crean tipos distintos, así que esto compila sin quejarse y las unidades no coinciden en silencio. Nombrar un tipo documenta la intención para quien lee; al compilador no le impone nada.
Para recordar
Un alias es un apodo, no una cosa nueva. Todo lo que sigue en esta ruta es el mismo apodo con parámetros añadidos.