logo

Enumerazioni in JavaScript

Enumerazioni in JavaScript sono un modo per definire un insieme di costanti denominate, spesso utilizzate per rappresentare una raccolta di valori correlati. Sebbene JavaScript non disponga del supporto integrato per le enumerazioni, è possibile ottenere funzionalità simili utilizzando oggetti o variabili const per migliorare la leggibilità e la manutenibilità del codice.

In JavaScript , Enumerazioni o enumerazioni vengono utilizzate per rappresentare un insieme fisso di valori denominati. Tuttavia, le enumerazioni non sono native di JavaScript, quindi vengono solitamente implementate utilizzando oggetti o array congelati.

Per garantire l'immutabilità delle enumerazioni in JavaScript, puoi seguire queste linee guida:



Metodo Object.freeze():

Un modo per creare un oggetto simile a Enum è definire un semplice oggetto JavaScript con valori di proprietà costanti e quindi utilizzare Object.freeze() per impedire qualsiasi ulteriore modifica. Ciò garantirà che l'oggetto e le sue proprietà non possano essere modificati o mutati. Puoi usare il Object.freeze() metodo per impedire qualsiasi modifica all'oggetto. Una volta congelato un oggetto, non è possibile aggiungere, modificare o eliminare nessuna delle sue proprietà. Puoi utilizzare questo metodo per creare un oggetto immutabile che rappresenta il tuo Enum.

Sintassi:

Object.freeze()>

Metodo Object.defineProperty():

È possibile utilizzare il metodo Object.defineProperty() per definire proprietà che non possono essere modificate, aggiunte o eliminate. È possibile utilizzare questo metodo per creare una proprietà di sola lettura per ogni valore Enum. È possibile utilizzare il metodo Object.defineProperty() per definire proprietà che non possono essere modificate, aggiunte o eliminate. È possibile utilizzare questo metodo per creare una proprietà di sola lettura per ogni valore Enum.

Utilizzo Dattiloscritto : TypeScript è un superset di JavaScript che include il supporto per Enums. Usando TypeScript, puoi definire le enumerazioni in un modo che ne garantisca l'immutabilità.

Esempio 1: In questo esempio, creiamo un oggetto Enum chiamato DaysOfWeek utilizzando Object.freeze(). Il metodo Object.freeze() rende l'oggetto immutabile, quindi non possiamo aggiungere, modificare o eliminare proprietà dall'oggetto.

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);>

Produzione:

0>

Simbolo ES6:

Un altro approccio alla creazione di un'enumerazione in JavaScript consiste nell'utilizzare i simboli ES6. I simboli sono identificatori univoci che non possono essere duplicati e possono essere utilizzati per definire valori costanti garantiti come univoci e immutabili.

Esempio: In questo esempio, stiamo definendo un'enumerazione chiamata myEnum utilizzando Object.freeze() per impedire qualsiasi modifica all'oggetto. Stiamo utilizzando Symbol() per creare simboli univoci per ciascun valore enum.

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>

Produzione:

Symbol(foo) Symbol(foo) undefined>

Utilizzando una chiusura:

Puoi anche utilizzare una chiusura per creare un Enum. Una chiusura è una funzione che ha accesso alle variabili nel suo ambito di funzione esterno. Creando una funzione interna che restituisce un valore, possiamo rendere di sola lettura la variabile nell'ambito della funzione esterna.

Esempio: In questo esempio utilizziamo una chiusura per creare un oggetto chiamato DaysOfWeek. L'oggetto days è definito nell'ambito della funzione esterna e non è accessibile dall'esterno della funzione. La funzione interna get restituisce il valore della proprietà con il nome dato dall'oggetto days. Poiché l'oggetto days non è direttamente accessibile, non può essere modificato dall'esterno della chiusura.

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>

Produzione:

0>