Introducción
En TypeScript, los enums (abreviatura de "enumeraciones") son una característica que permite definir un conjunto de constantes con nombre. Los enums son útiles cuando se necesita representar un conjunto fijo de valores relacionados, como los días de la semana, los estados de una aplicación, o los roles de usuario.
Conceptos Clave
- Definición de Enums: Cómo declarar y utilizar enums en TypeScript.
- Enums Numéricos: Enums que asignan valores numéricos automáticamente.
- Enums de Cadena: Enums que asignan valores de cadena.
- Enums Heterogéneos: Enums que combinan valores numéricos y de cadena.
- Uso de Enums: Cómo acceder y utilizar los valores de un enum.
Definición de Enums
Enums Numéricos
Los enums numéricos son el tipo más común de enums en TypeScript. Por defecto, los valores de los enums numéricos comienzan en 0 y se incrementan automáticamente.
enum Direction { Up, Down, Left, Right } let move: Direction = Direction.Up; console.log(move); // Output: 0
En el ejemplo anterior, Direction.Up
tiene el valor 0, Direction.Down
tiene el valor 1, y así sucesivamente.
Enums de Cadena
Los enums de cadena permiten asignar valores de cadena a las constantes del enum.
enum Direction { Up = "UP", Down = "DOWN", Left = "LEFT", Right = "RIGHT" } let move: Direction = Direction.Up; console.log(move); // Output: "UP"
Enums Heterogéneos
Los enums heterogéneos combinan valores numéricos y de cadena. Aunque es posible, su uso no es común y puede llevar a confusión.
enum BooleanLikeHeterogeneousEnum { No = 0, Yes = "YES" } let response: BooleanLikeHeterogeneousEnum = BooleanLikeHeterogeneousEnum.Yes; console.log(response); // Output: "YES"
Uso de Enums
Acceso a Valores de Enum
Puedes acceder a los valores de un enum utilizando la notación de punto.
enum Direction { Up, Down, Left, Right } let move: Direction = Direction.Left; console.log(move); // Output: 2
Enums y Tipos
Los enums también pueden ser utilizados como tipos para variables y parámetros de funciones.
enum Direction { Up, Down, Left, Right } function moveInDirection(direction: Direction) { console.log(`Moving in direction: ${direction}`); } moveInDirection(Direction.Right); // Output: Moving in direction: 3
Ejercicios Prácticos
Ejercicio 1: Crear un Enum Numérico
Crea un enum llamado Days
que represente los días de la semana, comenzando con Sunday
igual a 0.
enum Days { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday } let today: Days = Days.Friday; console.log(today); // Output: 5
Ejercicio 2: Crear un Enum de Cadena
Crea un enum llamado Colors
que represente los colores Red
, Green
, y Blue
con valores de cadena.
enum Colors { Red = "RED", Green = "GREEN", Blue = "BLUE" } let favoriteColor: Colors = Colors.Green; console.log(favoriteColor); // Output: "GREEN"
Ejercicio 3: Usar Enums en Funciones
Crea una función getDayName
que tome un valor del enum Days
y devuelva el nombre del día como una cadena.
enum Days { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday } function getDayName(day: Days): string { switch(day) { case Days.Sunday: return "Sunday"; case Days.Monday: return "Monday"; case Days.Tuesday: return "Tuesday"; case Days.Wednesday: return "Wednesday"; case Days.Thursday: return "Thursday"; case Days.Friday: return "Friday"; case Days.Saturday: return "Saturday"; default: return "Unknown"; } } console.log(getDayName(Days.Wednesday)); // Output: "Wednesday"
Resumen
En esta sección, hemos aprendido sobre los enums en TypeScript, incluyendo cómo definir enums numéricos, de cadena y heterogéneos. También hemos visto cómo acceder y utilizar los valores de un enum, y cómo emplearlos en funciones. Los enums son una herramienta poderosa para manejar conjuntos de valores constantes de manera clara y organizada.
En el próximo módulo, exploraremos las clases en TypeScript, una característica fundamental para la programación orientada a objetos.
Curso de TypeScript
Módulo 1: Introducción a TypeScript
- ¿Qué es TypeScript?
- Configuración del Entorno de TypeScript
- Tipos Básicos
- Anotaciones de Tipo
- Compilando TypeScript
Módulo 2: Trabajando con Tipos
Módulo 3: Tipos Avanzados
Módulo 4: Funciones y Módulos
- Tipos de Función
- Parámetros Opcionales y Predeterminados
- Parámetros Rest
- Módulos y Espacios de Nombres
- Decoradores
Módulo 5: Programación Asíncrona
Módulo 6: Herramientas y Mejores Prácticas
- Linting y Formateo
- Pruebas de Código TypeScript
- TypeScript con Webpack
- TypeScript con React
- Mejores Prácticas