CodeAventura
TypeScript
▸Union types y narrowing▸Literal types: valores exactos como tipos

Misión

Editor
// Crea un type alias EstadoPedido con literal types:
// "pendiente" | "enviado" | "entregado" | "cancelado"


// Crea una función obtenerEmoji que reciba un EstadoPedido
// y devuelva un emoji diferente para cada estado


// Prueba con cada estado

Consola
09 / 25Literal types: valores exactos como tipos
Anterior

Literal types: valores exactos como tipos

No solo "string", sino exactamente "hola"

Hasta ahora hemos usado tipos amplios: string, number, boolean. Pero TypeScript puede ser mucho más específico. Un literal type es un tipo que acepta un único valor exacto:

"norte" no es solo un string — es un tipo que solo acepta el valor "norte". Combinado con union (|), creas un set cerrado de valores permitidos.

const vs let: la inferencia cambia

Observa la diferencia:

Con let, el valor podría cambiar, así que TypeScript infiere el tipo amplio string. Con const, el valor nunca cambia, así que TypeScript infiere el literal type "hola".

Union de literal types

El patrón más común es combinar varios literal types con union:

Esto es como un enum casero — define exactamente qué valores son válidos.

Literal types numéricos y booleanos

No solo los strings pueden ser literales:

Narrowing con literal types

Cuando verificas un valor de un literal union, TypeScript sabe exactamente qué es:

En cada case, TypeScript sabe que luz es exactamente ese literal.

as const

A veces necesitas que TypeScript trate un valor como literal en contextos donde normalmente no lo haría:

as const congela el tipo: todo se vuelve readonly y los valores se tratan como literal types.

Tu desafío 🚀

  1. Crea un type alias EstadoPedido con los literal types: "pendiente", "enviado", "entregado" y "cancelado"
  2. Crea una función que reciba un EstadoPedido y devuelva un emoji descriptivo para cada estado
  3. Prueba con cada estado e imprime los resultados

Los literal types cierran la puerta a los valores inesperados. En vez de "cualquier string", dices exactamente cuáles son válidos. TypeScript se asegura de que nadie se salga del guion.