Un enum
(enumeración) es una característica de TypeScript que permite definir un conjunto de valores constantes bajo un mismo nombre.
Si quieres aprender más sobre el Enumeraciones
consulta el Curso de Introducción a la Programación leer más
Para definir un enum, se utiliza la palabra clave enum
seguida del nombre del enum y un bloque de llaves que contiene los valores del enum
.
enum NombreEnum {
VALOR1,
VALOR2,
VALOR3
}
Vamos a verlo con un ejemplo,
enum Direccion {
Norte,
Sur,
Este,
Oeste
}
let direccionActual: Direccion = Direccion.Norte;
console.log(direccionActual); // Output: 0
console.log(Direccion[direccionActual]); // Output: Norte
En este ejemplo, Direccion
es un enum que define cuatro valores: Norte
, Sur
, Este
y Oeste
. Los valores del enum son automáticamente asignados a números enteros, comenzando desde 0.
Enums Numéricos
Por defecto, los enums en TypeScript son numéricos. Cada valor en el enum se asigna a un número, comenzando desde 0 y aumentando en 1 para cada valor subsiguiente.
Personalización de valores numéricos
Se pueden personalizar los valores numéricos asignados a cada miembro del enum.
enum Estado {
Inactivo = 0,
Activo = 1,
Pausado = 2
}
let estadoActual: Estado = Estado.Activo;
console.log(estadoActual); // Output: 1
Incremento automático
Si se define un valor numérico explícito para un miembro del enum, los valores subsiguientes se incrementarán automáticamente a partir de ese valor.
enum Semana {
Lunes = 1,
Martes,
Miercoles,
Jueves,
Viernes
}
console.log(Semana.Lunes); // Output: 1
console.log(Semana.Martes); // Output: 2
console.log(Semana.Viernes); // Output: 5
Enums de string
Además de los enums numéricos, TypeScript también permite definir enums de string, donde cada miembro del enum se asigna a una cadena de texto.
enum Color {
Rojo = "Rojo",
Verde = "Verde",
Azul = "Azul"
}
let colorFavorito: Color = Color.Verde;
console.log(colorFavorito); // Output: Verde
En este ejemplo, Color
es un enum de cadena que define tres valores: Rojo
, Verde
y Azul
.
Enums heterogéneos
Aunque no es una práctica común (ni probablemente recomendable 😅) TypeScript permite definir enums que mezclan valores numéricos y de cadena.
enum Mixto {
No = 0,
Si = "Sí"
}
console.log(Mixto.No); // Output: 0
console.log(Mixto.Si); // Output: Sí
Ejemplos prácticos
Comparaciones
Los enums son útiles para realizar comparaciones claras y legibles en el código.
enum Respuesta {
No = 0,
Si = 1
}
function responder(respuesta: Respuesta): void {
if (respuesta === Respuesta.Si) {
console.log("Respuesta positiva.");
} else {
console.log("Respuesta negativa.");
}
}
responder(Respuesta.Si); // Output: Respuesta positiva.
Iteración sobre enums
Se puede iterar sobre los valores de un enum utilizando bucles y la función Object.keys
.
enum Talla {
Pequeña,
Mediana,
Grande
}
for (let talla in Talla) {
if (isNaN(Number(talla))) {
console.log(talla); // Output: Pequeña, Mediana, Grande
}
}