Un enum es un grupo de constantes relacionadas bajo un mismo nombre:
Por defecto, los valores son numéricos empezando desde 0: Norte = 0, Sur = 1, Este = 2, Oeste = 3.
Los enums numéricos no son muy legibles al debuggear. Los enums de string son más claros:
Cada valor es un string explícito. Cuando lo ves en la consola o en un JSON, sabes exactamente qué es.
El parámetro solo acepta valores del enum. No puedes pasar un string suelto:
Puedes lograr algo similar con union types:
¿Cuál usar? Depende:
| Enum | Union de literals | |
|---|---|---|
| Genera código JS | Sí | No (solo tipo) |
| Se puede iterar | Sí | No |
| Peso en bundle | Tiene peso | Cero peso |
| Preferencia moderna | Menos común | Más común |
La tendencia en TypeScript moderno es preferir union de literal types porque son más ligeras. Los enums son útiles cuando necesitas iterar sobre los valores o cuando vienes de lenguajes como C# o Java.
Si usas const enum, TypeScript elimina el enum en compilación y reemplaza cada uso con el valor literal:
Más eficiente, pero con limitaciones (no puedes iterar sobre él).
Rol con valores Admin = "ADMIN", Editor = "EDITOR" y Viewer = "VIEWER"obtenerPermisos que reciba un Rol y devuelva un string describiendo los permisosLos enums organizan constantes relacionadas bajo un mismo techo. Úsalos cuando necesites un grupo cerrado de valores con nombre.