Saltar al contenido
webtype.orgDoce conceptos · 1/12

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.