Los enums o enumeraciones en TypeScript son un tipo especial que nos permite definir un conjunto de constantes nombradas. Esto es especialmente útil cuando queremos que una variable solo pueda tener un conjunto limitado de valores predefinidos.
Veamos un ejemplo con las provincias de Argentina:
enum Provincia {
BuenosAires = 'Buenos Aires',
Cordoba = 'Córdoba',
SantaFe = 'Santa Fe',
//... otros valores ...
}
En este caso, creamos un enum Provincia que tiene los nombres de algunas provincias de Argentina como constantes. Ahora podemos crear una variable que solo pueda tomar uno de esos valores:
let miProvincia: Provincia;
miProvincia = Provincia.Cordoba; // Esto es correcto
miProvincia = 'Salta'; // Esto daría un error
Otro ejemplo podría ser el de los días de la semana:
enum Dia {
Lunes = 'Lunes',
Martes = 'Martes',
Miercoles = 'Miércoles',
Jueves = 'Jueves',
Viernes = 'Viernes',
Sabado = 'Sábado',
Domingo = 'Domingo'
}
En este caso, cualquier día que no esté en el enum Dia dará un error si intentamos asignarlo a una variable de tipo Dia. Los Enums son una herramienta muy útil para controlar los valores que puede tomar una variable y para hacer que nuestro código sea más legible y fácil de entender. El problema con los enums es que transpilan muchisimo codigo para que lo pueda entender JavaScript. Mira por ejemplo como se ve el ejemplo de los dias de la semana en JavaScript
var Dia;
(function (Dia) {
Dia["Lunes"] = "Lunes";
Dia["Martes"] = "Martes";
Dia["Miercoles"] = "Miercoles";
Dia["Jueves"] = "Jueves";
Dia["Viernes"] = "Viernes";
Dia["Sabado"] = "Sabado";
Dia["Domingo"] = "Domingo";
})(Dia || (Dia = {}));
Esto te lleva un monton de código que se va a pasar al cliente y quizas uno no quiere eso, sobre todo por temas de performance. Para lograrlo, solo alcanza con convertir el enum en una constante
const enum Dia {
Lunes = 'Lunes',
Martes = 'Martes',
Miercoles = 'Miércoles',
Jueves = 'Jueves',
Viernes = 'Viernes',
Sabado = 'Sábado',
Domingo = 'Domingo'
}