La proposition de l'ECMA apporterait des enregistrements et des tuples à JavaScript

JavaScript gagnerait des types de valeur record et tuple dans le cadre d'une proposition avant ECMA International, l'organisme de normalisation qui supervise le langage de programmation populaire pour le développement Web.

Les enregistrements et les tuples introduiraient deux structures de données profondément immuables dans JavaScript: Recordune structure de type objet et Tupleune structure de type tableau. Une ébauche du plan avec le Comité technique 39 de l'ECMA, qui régit ECMAScript, le standard JavaScript sous-jacent.

Les enregistrements et les tuples, les états de la proposition, ne peuvent contenir que des primitives et d'autres enregistrements et tuples. Ils peuvent être considérés comme des «primitifs composés». Et en étant complètement basés sur des primitifs, ils sont profondément immuables. Comme les objets et les tableaux, les enregistrements et les tuples prennent en charge des expressions idiomatiques confortables pour la construction, l'utilisation et la manipulation, les états de proposition. Ils sont comparés par contenu plutôt que par identité.

Les moteurs JavaScript peuvent effectuer certaines optimisations sur la construction, la manipulation et la comparaison des enregistrements et des tuples, de la même manière que les chaînes sont implémentées. Les enregistrements et les tuples sont destinés à être utilisables et compris avec des supersets de système de type externe tels que TypeScript ou Flow.

Actuellement, les bibliothèques utilisateur telles que immutable.js implémentent des concepts similaires. Une précédente proposition de l'ECMA pour des structures de données immuables a été tentée mais abandonnée en raison de la complexité et du manque de cas d'utilisation suffisants, indique la proposition. La nouvelle proposition introduit des changements significatifs, offrant des avantages d'utilisabilité par rapport aux bibliothèques utilisateur, tels que les suivants:

  • Les enregistrements et les tuples sont facilement introspectables dans un débogueur.
  • Aucun branchement supplémentaire n'est nécessaire pour écrire une bibliothèque générique qui consomme des objets immuables et JS.
  • Les cas d'utilisation sont évités où les développeurs peuvent effectuer une conversion coûteuse entre des objets JS normaux et des structures immuables.

Les enregistrements et les tuples interagissent bien avec les objets et les tableaux. Ils peuvent être lus de la même manière que les objets et les tableaux. La principale différence réside dans l'immuabilité profonde et la comparaison par valeur plutôt que par identité. Aussi, la syntaxe proposée améliore considérablement l'ergonomie d'utilisation Recordet Tupledans le code.

La version la plus récente de la spécification ECMAScript, version 2020, a été adoptée en juin. Il présentait des capacités dans des domaines tels que le chargement de modules et un nouveau BigInttype.