Le enum di Ty­pe­Script sono una classe speciale composta da variabili costanti. È possibile definire in anticipo il valore di queste variabili. Si distingue fra enum numeriche ed enum basate su stringhe.

Che cosa sono le enum di Ty­pe­Script?

Le enum (ab­bre­via­zio­ne di “enu­me­ra­ted types”) sono tipi di dati che hanno un insieme finito di valori. Questo insieme di valori è già chia­ra­men­te definito in fase di di­chia­ra­zio­ne di un’enum con un iden­ti­fi­ca­to­re e non può essere mo­di­fi­ca­to suc­ces­si­va­men­te. È anche possibile spe­ci­fi­ca­re in pre­ce­den­za l’ordine di vi­sua­liz­za­zio­ne dei valori. Con le enum di Ty­pe­Script è possibile creare variabili costanti che mi­glio­ra­no la leg­gi­bi­li­tà del tuo codice e ti per­met­to­no al tempo stesso di evitare errori. È una delle poche fun­zio­na­li­tà che non è un’esten­sio­ne di Ja­va­Script tipizzata in modo statico. Si fa di­stin­zio­ne fra enum di Ty­pe­Script numeriche e basate su stringhe. In questo articolo ti pre­sen­tia­mo entrambe le varianti.

Managed Nextcloud di IONOS Cloud
Lavora con il tuo team sul cloud
  • Massima sicurezza dei tuoi dati
  • Strumenti di col­la­bo­ra­zio­ne per lavorare in team
  • Ag­gior­na­men­ti au­to­ma­ti­ci

Enum numeriche di Ty­pe­Script

Per le enum numeriche di Ty­pe­Script, il primo valore è “0” per im­po­sta­zio­ne pre­de­fi­ni­ta. Ogni valore ag­giun­ti­vo viene quindi in­cre­men­ta­to di “1”. Il metodo viene avviato con il parametro enum e memorizza le stringhe in formato numerico. Nel primo passaggio del semplice esempio seguente definiamo i mesi e as­se­gnia­mo loro un valore. Suc­ces­si­va­men­te in­ter­ro­ghia­mo il valore spe­ci­fi­ca­to per il mese di aprile:

enum Mesi {
	Gennaio,
	Febbraio,
	Marzo,
	Aprile,
	Maggio,
	Giugno,
	Luglio,
	Agosto,
	Settembre,
	Ottobre,
	Novembre,
	Dicembre
}
let MeseCorrente = Mesi.Aprile;
console.log(MeseCorrente);
ty­pe­script

Il risultato è il seguente:

3
ty­pe­script

Per im­po­sta­zio­ne pre­de­fi­ni­ta, il sistema inizia ad assegnare i valori partendo da “0”. Gennaio riceve il valore “0”, febbraio il valore “1”, marzo il valore “2” e aprile “3”, il valore che cerchiamo. Poiché questa sequenza non cor­ri­spon­de alla nu­me­ra­zio­ne effettiva dei mesi, prov­ve­dia­mo a ini­zia­liz­za­re le enum di Ty­pe­Script as­se­gnan­do loro di­ret­ta­men­te i valori ap­pro­pria­ti. A tal fine è suf­fi­cien­te mo­di­fi­ca­re leg­ger­men­te il codice pre­ce­den­te:

enum Mesi {
	Gennaio = 1,
	Febbraio,
	Marzo,
	Aprile,
	Maggio,
	Giugno,
	Luglio,
	Agosto,
	Settembre,
	Ottobre,
	Novembre,
	Dicembre
}
let MeseCorrente = Mesi.Aprile;
console.log(MeseCorrente);
ty­pe­script

Ora il nostro risultato si presenta così:

4
ty­pe­script

È suf­fi­cien­te assegnare il valore de­si­de­ra­to al primo mese. Il sistema procede poi a in­cre­men­ta­re il numero di uno alla volta come di consueto.

As­se­gna­zio­ne di valori numerici per­so­na­liz­za­ti

Se vuoi evitare il conteggio au­to­ma­ti­co, puoi anche assegnare un valore numerico per­so­na­liz­za­to a ciascun valore delle enum di Ty­pe­Script. L’esempio seguente riguarda quattro volumi di una serie di romanzi: il nostro obiettivo è me­mo­riz­za­re il loro numero di pagine come valore fisso. A seguire chiediamo al sistema di mostrare il numero di pagine del secondo volume per poterlo ve­ri­fi­ca­re. Il codice per farlo è il seguente:

enum NumeroPagine {
	Volume1 = 491,
	Volume2 = 406,
	Volume3 = 360,
	Volume4 = 301
}
let pagine = NumeroPagine.Volume2;
console.log(pagine);
ty­pe­script

L’output è quindi il seguente:

406
ty­pe­script

Enum di Ty­pe­Script basate su stringhe

Le enum di Ty­pe­Script basate su stringhe fun­zio­na­no secondo un principio molto simile. In questo caso, però, alle enum non viene assegnato un valore numerico, ma una stringa. Nell’esempio seguente as­se­gnia­mo ai giorni della settimana un’ab­bre­via­zio­ne adeguata in formato String, che inseriamo tra vir­go­let­te. Quindi ri­chia­mia­mo i valori per “Venerdì” e “Martedì” al fine di ve­ri­fi­car­li. Il codice si presenta così:

enum GiorniSettimana {
Lunedì = "Lu",
Martedì = "Ma",
Mercoledì = "Me",
Giovedì = "Gio",
Venerdì = "Ve",
Sabato = "Sa",
Domenica = "Do"
};
console.log(GiorniSettimana.Venerdì);
console.log(GiorniSettimana.Martedì);
ty­pe­script

Il risultato che otteniamo è questo:

Ve
Ma
ty­pe­script

Com­bi­na­zio­ne di numeri e stringhe

Teo­ri­ca­men­te è anche possibile combinare enum di Ty­pe­Script di tipo numerico e basate su stringhe. In generale, i casi d’uso di questa opzione sono piuttosto chiari, ma per com­ple­tez­za ti mostriamo un esempio. In questo caso, im­po­stia­mo valori diversi. La procedura rimane comunque sempre la stessa:

enum GiorniSettimana {
Lunedì = "Lu",
Martedì =2,
Mercoledì =3,
Giovedì = "Gio",
Venerdì = "Ve",
Sabato = 6,
Domenica = "Do"
};
console.log(GiorniSettimana.Venerdì);
console.log(GiorniSettimana.Martedì);
ty­pe­script

Il risultato ora è il seguente:

Ve
2
ty­pe­script

Reverse mapping per tipi di dati costanti

La logica del reverse mapping (ossia “mappatura inversa”) sta­bi­li­sce quanto segue: se riesci ad accedere al valore di un’enum di Ty­pe­Script, puoi anche accedere al suo nome. Per spiegare questo principio, uti­liz­zia­mo di nuovo il nostro esempio con i giorni della settimana:

enum GiorniSettimana {
Lunedì = 1,
Martedì,
Mercoledì,
Giovedì,
Venerdì,
Sabato,
Domenica
};
GiorniSettimana.Venerdì
GiorniSettimana["Venerdì"];
GiorniSettimana[5];
ty­pe­script

In questo esempio, GiorniSettimana.Venerdì re­sti­tui­sce il valore “5”. Lo stesso vale anche per GiorniSettimana["Venerdì"]. Tuttavia, per via della mappatura inversa, GiorniSettimana[5] re­sti­tui­rà il nome “Venerdì”. Ti mostriamo il fun­zio­na­men­to con questa semplice istru­zio­ne:

enum GiorniSettimana {
Lunedì = 1,
Martedì,
Mercoledì,
Giovedì,
Venerdì,
Sabato,
Domenica
};
console.log(GiorniSettimana);
ty­pe­script

Otteniamo quindi il seguente output:

{
    '1': 'Lunedì',
    '2': 'Martedì',
    '3': 'Mercoledì',
    '4': 'Giovedì',
    '5': 'Venerdì',
    '6': 'Sabato',
    '7': 'Domenica',
    Lunedì: 1,
    Martedì: 2,
    Mercoledì: 3,
    Giovedì: 4,
    Venerdì: 5,
    Sabato: 6,
    Domenica: 7
}
ty­pe­script

Con­ver­sio­ne di enum di Ty­pe­Script in array

È anche possibile con­ver­ti­re le enum di Ty­pe­Script in array di Ty­pe­Script. Per il nostro esempio con i giorni della settimana, il codice è simile al seguente:

enum GiorniSettimana {
Lunedì = "Lu",
Martedì = "Ma",
Mercoledì = "Me",
Giovedì = "Gio",
Venerdì = "Ve",
Sabato = "Sa",
Domenica = "Do"
};
const ArrayGiorniSettimana: { label: string; value: string }[] = [];
for (const key in GiorniSettimana) {
    if (GiorniSettimana.hasOwnProperty(key)) {
        ArrayGiorniSettimana.push({ label: key, value: GiorniSettimana[key] });
    }
}
console.log(ArrayGiorniSettimana);
ty­pe­script

In questo modo otteniamo questo risultato:

[
    { label: 'Lunedì', value: 'Lu' },
    { label: 'Martedì', value: 'Ma' },
    { label: 'Mercoledì', value: 'Me' },
    { label: 'Giovedì', value: 'Gio' },
    { label: 'Venerdì', value: 'Ve' },
    { label: 'Sabato', value: 'Sa' },
    { label: 'Domenica', value: 'Do' }
]
ty­pe­script
Consiglio

Effettua il de­ploy­ment del tuo sito web statico o della tua app di­ret­ta­men­te tramite GitHub: con Deploy Now di IONOS puoi trarre vantaggio da una con­fi­gu­ra­zio­ne più veloce, flussi di lavoro ot­ti­miz­za­ti e diversi piani tariffari. Trova la soluzione più adatta al tuo progetto!

Vai al menu prin­ci­pa­le