Un 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
}
}