La proposta ECMA porterebbe record e tuple in JavaScript

JavaScript otterrebbe tipi di valore record e tupla in base a una proposta davanti a ECMA International, l'ente per gli standard che sovrintende al popolare linguaggio di programmazione per lo sviluppo web.

I record e le tuple introdurrebbero in JavaScript due strutture di dati profondamente immutabili: Recorduna struttura simile a un oggetto e Tupleuna struttura simile a un array. Una bozza del piano con ECMA Technical Committee 39, che governa ECMAScript, lo standard sottostante JavaScript.

Record e tuple, afferma la proposta, possono contenere solo primitive e altri record e tuple. Possono essere pensati come "primitive composte". E essendo completamente basati su primitivi, sono profondamente immutabili. Come gli oggetti e gli array, i record e le tuple supportano espressioni idiomatiche confortevoli per la costruzione, l'uso e la manipolazione, afferma la proposta. Sono confrontati per contenuto piuttosto che per identità.

I motori JavaScript potrebbero eseguire determinate ottimizzazioni su costruzione, manipolazione e confronto di record e tuple, analogamente a come vengono implementate le stringhe. I record e le tuple devono essere utilizzabili e compresi con superset di sistemi di tipi esterni come TypeScript o Flow.

Attualmente, le librerie userland come immutable.js implementano concetti simili. Una precedente proposta ECMA per strutture di dati immutabili è stata tentata ma abbandonata a causa della complessità e della mancanza di casi d'uso sufficienti, afferma la proposta. La nuova proposta introduce cambiamenti significativi, offrendo vantaggi di usabilità rispetto alle librerie userland come le seguenti:

  • I record e le tuple sono facilmente rilevabili in un debugger.
  • Non è necessaria alcuna ramificazione aggiuntiva per scrivere una libreria generica che consuma oggetti immutabili e JS.
  • Si evitano casi d'uso in cui gli sviluppatori possono convertire in modo costoso tra normali oggetti JS e strutture immutabili.

I record e le tuple interagiscono bene con oggetti e array. Possono essere letti allo stesso modo degli oggetti e degli array. La differenza fondamentale è incentrata sulla profonda immutabilità e sul confronto per valore piuttosto che per identità. Inoltre, la sintassi proposta migliora notevolmente l'ergonomia di utilizzo Recorde Tuplenel codice.

La versione più recente della specifica ECMAScript, la versione 2020, è stata adottata a giugno. Presentava funzionalità in aree come il caricamento dei moduli e un nuovo BigInttipo.