Declaración y combinación de enumeraciones de TypeScript

Esta es la segunda publicación sobre la fusión de declaraciones en TypeScript. En la publicación anterior, analizamos qué es la fusión de declaraciones y comenzamos con las interfaces. En esta publicación, veremos cómo fusionar enumeraciones.

Para obtener una introducción a las enumeraciones y por qué son útiles, puede leer esta publicación.

Empecemos:

enum Department {  IT,   Marketing}enum Department {  HR}

En nuestro código anterior, dado que ambas enumeraciones tienen el mismo nombre, DepartmentTypeScript debería poder fusionarlas, ¿verdad? Bueno, ¡no tan rápido! Esto en realidad generará un error en la segunda declaración de enumeración si lo dejamos así. El error dice:In an enum with multiple declarations, only one declaration can omit an initializer for its first enum element.

Esto significa que, a los elementos de enumeración se les asignan valores automáticamente si no se especifican. Por lo tanto, ITen la primera Departmentenumeración se le asigna el valor 0y Marketingse le asigna el valor de 1. En la segunda Department, dado que HRes el primer elemento de esa enumeración, también se le asigna el valor de 0. Cuando se fusionan, tanto ITy HRtendrán un valor de 0y que no está permitido, de ahí el error.

Para solucionar esto, podemos especificar un valor para el primer elemento de nuestra enumeración. Los valores de los elementos subsiguientes de la enumeración se incrementarán en uno si no se especifica nada.

enum Department {  IT = 1,   Marketing // has a value of 2, that is 1 + (IT value)}enum Department {  HR // has an automatically assigned value of 0}console.log(Department[1]) // ITconsole.log(Department[2]) // Marketingconsole.log(Department[0]) // HR

Al especificar el valor de 1, ITcuando a HR se le asigna automáticamente el valor de 0, no causará ningún error porque ningún otro elemento tiene ese valor.

Por supuesto, también podemos asignar valores específicos a todos los elementos.

enum Department {  IT = 5,   Marketing = 3}enum Department {  HR = 8}console.log(Department[5]) // ITconsole.log(Department[3]) // Marketingconsole.log(Department[8]) // HR

Eso es todo.

SUSCRÍBETE A NUESTRO BOLETÍN 
No te pierdas de nuestro contenido ni de ninguna de nuestras guías para que puedas avanzar en los juegos que más te gustan.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir

Este sitio web utiliza cookies para mejorar tu experiencia mientras navegas por él. Este sitio web utiliza cookies para mejorar tu experiencia de usuario. Al continuar navegando, aceptas su uso. Mas informacion