Enumeraciones en JavaScript son una forma de definir un conjunto de constantes con nombre, que a menudo se utilizan para representar una colección de valores relacionados. Si bien JavaScript no tiene soporte integrado para enumeraciones, se puede lograr una funcionalidad similar utilizando objetos o variables constantes para mejorar la legibilidad y el mantenimiento del código.
En javascript , Las enumeraciones o enumeraciones se utilizan para representar un conjunto fijo de valores con nombre. Sin embargo, las enumeraciones no son nativas de JavaScript, por lo que generalmente se implementan mediante objetos o matrices congeladas.
Para garantizar la inmutabilidad de Enums en JavaScript, puede seguir estas pautas:
Método Object.freeze():
Una forma de crear un objeto similar a Enum es definiendo un objeto JavaScript simple con valores de propiedad constantes y luego usando Objeto.freeze() para evitar cualquier modificación adicional. Esto asegurará que el objeto y sus propiedades no puedan cambiarse ni mutarse. Puedes usar el Objeto.freeze() método para evitar cualquier cambio en el objeto. Una vez que un objeto está congelado, no puede agregar, modificar ni eliminar ninguna de sus propiedades. Puede utilizar este método para crear un objeto inmutable que represente su Enum.
Sintaxis:
Object.freeze()>
Método Object.defineProperty():
Puede utilizar el método Object.defineProperty() para definir propiedades que no se pueden cambiar, agregar ni eliminar. Puede utilizar este método para crear una propiedad de solo lectura para cada valor de Enum. Puede utilizar el método Object.defineProperty() para definir propiedades que no se pueden cambiar, agregar ni eliminar. Puede utilizar este método para crear una propiedad de solo lectura para cada valor de Enum.
Usar Mecanografiado : TypeScript es un superconjunto de JavaScript que incluye soporte para enumeraciones. Usando TypeScript, puedes definir Enums de una manera que garantice su inmutabilidad.
carpeta de cambio de nombre de Linux
Ejemplo 1: En este ejemplo, creamos un objeto Enum llamado DaysOfWeek usando Object.freeze(). El método Object.freeze() hace que el objeto sea inmutable, por lo que no podemos agregar, modificar ni eliminar propiedades del objeto.
JavaScript const DaysOfWeek = Object.freeze({ SUNDAY: 0, MONDAY: 1, TUESDAY: 2, WEDNESDAY: 3, THURSDAY: 4, FRIDAY: 5, SATURDAY: 6 }); // Try to modify the enum // This will not change the Sunday variable DaysOfWeek.SUNDAY = 7; console.log(DaysOfWeek.SUNDAY);> Producción:
0>
Símbolo ES6:
Otro enfoque para crear una enumeración en JavaScript es utilizar símbolos ES6. Los símbolos son identificadores únicos que no se pueden duplicar y se pueden utilizar para definir valores constantes que se garantiza que serán únicos e inmutables.
comentario xml
Ejemplo: En este ejemplo, definimos una enumeración llamada myEnum usando Object.freeze() para evitar modificaciones en el objeto. Estamos usando Symbol() para crear símbolos únicos para cada valor de enumeración.
JavaScript const myEnum = Object.freeze({ FOO: Symbol('foo'), BAR: Symbol('bar'), BAZ: Symbol('baz') }); console.log(myEnum.FOO); // Symbol(foo) // Attempting to modify the enum // values will have no effect myEnum.FOO = Symbol('newFoo'); console.log(myEnum.FOO); // Symbol(foo) // Adding a new property to the enum // object will also have no effect myEnum.QUX = Symbol('qux'); console.log(myEnum.QUX); // undefined> Producción:
Symbol(foo) Symbol(foo) undefined>
Usando un cierre:
También puedes usar un cierre para crear una enumeración. Un cierre es una función que tiene acceso a variables en su alcance de función externo. Al crear una función interna que devuelve un valor, podemos hacer que la variable en el alcance de la función externa sea de solo lectura.
Ejemplo: En este ejemplo, usamos un cierre para crear un objeto llamado DaysOfWeek. El objeto de días se define en el alcance de la función externa y no es accesible desde fuera de la función. La función interna get devuelve el valor de la propiedad con el nombre de pila del objeto de días. Dado que el objeto de días no es directamente accesible, no se puede modificar desde fuera del cierre.
JavaScript const DaysOfWeek = (function () { const days = { SUNDAY: 0, MONDAY: 1, TUESDAY: 2, WEDNESDAY: 3, THURSDAY: 4, FRIDAY: 5, SATURDAY: 6 }; return { get: function (name) { return days[name]; } }; })(); // Try to modify the enum // This will not have any effect DaysOfWeek.SUNDAY = 7; console.log(DaysOfWeek.get('SUNDAY')); // Output: 0> Producción:
0>