Con l'integrazione in Mozilla Firefox 127 i metodi per i Set di JavaScript sono ora supportati dai browser Web più diffusi. Questo significa in pratica che per implementarli non sarà più necessario l'utilizzo di polyfill. A ciò si aggiunge il supporto nella versione 5.5 di TypeScript a seguito dell'inclusione nello standard ECMAScript.
Cosa sono i Set di JavaScript
Per capire cosa è un Set in JavaScript è possibile pensare a degli array che non contengono valori duplicati. In sostanza, se si vogliono aggiungere nuovi valori ai Set questi non devono essere già presenti nella sequenza. È possibile memorizzare valori unici di qualsiasi tipo, siano essi primitivi o riferimenti a oggetti. In ogni caso viene mantenuto l'ordine d'inserimento degli elementi che l'oggetto accetta solo se non ripetuti.
La creazione di un Set si basa sul costruttore omonimo:
const myNumbers = new Set();
ed è sempre possibile inizializzarne uno tramite un array di valori:
const myNumbers = new Set([13, 21, 34, 55, 89, 144]);
Il Set diventa così iterabile con il costrutto for..of
:
for (const value of myNumbers) {
..
}
I metodi per i Set
Grazie ai Set si possono gestire collezioni di valori unici con metodi pensati per aggiungere, eliminare e verificare la presenza di elementi. Chi programma abitualmente con linguaggi come Rust, C# o Python conoscerà già l'utilità di costrutti di questo genere.
JavaScript Set methods now usable cross-browser, and in newly released TypeScript 5.5 • DEVCLASS - DevClass https://t.co/HVAdnJMcOq
— Javascript Agent (@JavascriptAgent) June 26, 2024
Esistono poi dei metodi per eseguire task più avanzati come per esempio, symmetricDifference()
che, dato un Set, restituisce un nuovo Set contenente elementi che sono presenti o in quest'ultimo o nel set iniziale, ma non in entrambi. intersection()
restituisce invece un nuovo Set che contiene tutti i valori che sono entrambi presenti in due Set passati come argomenti.
Soprattutto i metodi più recenti sono difficili da riprodurre tramite polyfill, inoltre il loro supporto a livello cross-browser ne rende più semplice l'impiego in produzione.
Per quanto riguarda TypeScript 5.5 è bene ricordare che tali metodi non sono supportati nella release Beta mentre lo sono nella Release Candidate dell'aggiornamento.