Der ECMA-Vorschlag würde Datensätze und Tupel in JavaScript bringen

JavaScript würde im Rahmen eines Vorschlags vor ECMA International, dem Normungsgremium, das die beliebte Programmiersprache für die Webentwicklung überwacht, Datensatz- und Tupelwerttypen erhalten.

Datensätze und Tupel würden JavaScript zwei tief unveränderliche Datenstrukturen einführen: Recordeine objektähnliche Struktur und Tupleeine Array-ähnliche Struktur. Ein Entwurf des Plans mit dem ECMA Technical Committee 39, der ECMAScript, den zugrunde liegenden Standard für JavaScript, regelt.

Datensätze und Tupel dürfen laut Vorschlag nur Grundelemente und andere Datensätze und Tupel enthalten. Sie können als "zusammengesetzte Primitive" betrachtet werden. Und indem sie gründlich auf Primitiven basieren, sind sie zutiefst unveränderlich. Wie Objekte und Arrays unterstützen Datensätze und Tupel komfortable Redewendungen für Konstruktion, Verwendung und Manipulation, heißt es im Vorschlag. Sie werden eher nach Inhalten als nach Identität verglichen.

JavaScript-Engines führen möglicherweise bestimmte Optimierungen beim Erstellen, Bearbeiten und Vergleichen von Datensätzen und Tupeln durch, analog zur Implementierung von Zeichenfolgen. Datensätze und Tupel sollen mit externen Supersets von Typsystemen wie TypeScript oder Flow verwendet und verstanden werden können.

Derzeit implementieren Userland-Bibliotheken wie immutable.js ähnliche Konzepte. Ein früherer ECMA-Vorschlag für unveränderliche Datenstrukturen wurde versucht, aber aufgrund der Komplexität und des Mangels an ausreichenden Anwendungsfällen aufgegeben, heißt es in dem Vorschlag. Der neue Vorschlag führt wesentliche Änderungen ein und bietet Usability-Vorteile gegenüber Userland-Bibliotheken wie den folgenden:

  • Datensätze und Tupel sind in einem Debugger leicht nachvollziehbar.
  • Es ist keine zusätzliche Verzweigung erforderlich, um eine generische Bibliothek zu schreiben, die unveränderliche und JS-Objekte verwendet.
  • Anwendungsfälle werden vermieden, in denen Entwickler möglicherweise teuer zwischen regulären JS-Objekten und unveränderlichen Strukturen konvertieren.

Datensätze und Tupel arbeiten gut mit Objekten und Arrays zusammen. Sie können genauso gelesen werden wie Objekte und Arrays. Der Hauptunterschied liegt in der tiefen Unveränderlichkeit und dem Vergleich nach Wert und nicht nach Identität. Die vorgeschlagene Syntax verbessert auch die Ergonomie der Verwendung Recordund Tupledes Codes erheblich .

Die neueste Version der ECMAScript-Spezifikation, Version 2020, wurde im Juni verabschiedet. Es enthielt Funktionen in Bereichen wie dem Laden von Modulen und einem neuen BigIntTyp.