JavaScript: Die Features fĂĽr ECMAScript 2020 stehen fest
Das zuständige Komitee hat das Feature-Set für ECMAScript 2020 festgelegt. Die vorgeschlagenen Proposals sollen noch im Juni 2020 freigegeben werden.
- Lisa Messerli
- Madeleine Domogalla
Das Technical Committee 39 (TC39) der Standardisierungsbehörde ECMA International hat die Features für den diesjährigen ECMAScript-Sprachstandard festgelegt. Das ECMA-Standardkomitee soll das Feature-Set im Juni dieses Jahres prüfen und genehmigen. Seit 2015 erscheinen die ECMAScript-Standards jährlich, und zwar immer im Juni. Derzeit hat der Standard Canditate-Status.
Neue Features fĂĽr ECMAScript 2020
Die technische Arbeitsgruppe schlägt die Einführung der matchAll
-Methode in ES2020 vor, die an String
gekoppelt ist. Damit soll ein Iterator fĂĽr alle Match
-Objekte erstellt werden, die durch einen globalen regulären Ausdruck erzeugt wurden.
Neu ist auch die import()
-Methode. Entwickler erhalten damit die Möglichkeit, ein dynamisch erstelltes Modul wie moduleSpecifier = dir + 'my-math.mjs'
asynchron, mit oder ohne Bedingung, zu jeder Stelle im Code einzufĂĽgen.
Das Standardkomitee muss auch genehmigen, ob ES2020 den primitiven Datentyp BigInt
einfĂĽhren darf. Diese Methode betrifft die Arbeit mit Langzahl-Datentypen (arbitrary-precision Integers). BigInt
wird durch das Anhängen von n
am Ende eines Integers (10n
) oder durch den Aufruf der Funktion BigInt()
erstellt. Mit der EinfĂĽhrung des neuen, primitiven Datentyps BigInt
wird ein größerer Zahlenraum zugänglich gemacht. Er ermöglicht, Ganzzahlen über 253 -1 abzubilden, was bisher mit dem bestehenden Number-Typ die obere Grenze dargestellt hat.
const biggestInt = BigInt(
Number.MAX_SAFE_INTEGER + 1);
Mit dem neuen Konstruktor lässt sich der vergrößerte Zahlenraum nutzen. Wird das Feature vor dem offiziellen Release verwendet, sollte man vorab prüfen, ob der gewünschte Zielbrowser den Typen bereits unterstützt. Eine verkürzte Schreibweise zum Erstellen von BigInt-Werten wird bald mit der Kennzeichnung n
möglich sein. Mit dem neuen Datentyp kann man wie gewohnt rechnen.
const bigIntAddition = biggestInt + BigInt(10);
const typeError = biggestInt - 10;
Verbesserter Umgang mit Promises
Mit Promise.allSettled()
werden die Methoden Promise.all()
und Promise.race()
aus ES2015 vervollständigt. Diese Neuerung wurde für die Fälle vorgeschlagen, in denen alle Promises unabhängig vom Ergebnis (erfüllt oder nicht erfüllt) sind. Bisher sorgte die Ablehnung eines ersten Promise für die Zurückweisung des Gesamten, sodass ein zweites Promise nicht mehr erfüllt werden konnte. Promise.allSettled()
soll zukünftig Fälle abdecken, in denen Teilergebnisse relevant sind.
Ein weiterer Vorschlag bietet Entwicklern die Möglichkeit, mit dem Keyword globalThis
portablen ECMAScript-Code schreiben. Dadurch lässt sich auf das globale Objekt zugreifen. Das Benutzen von window
, self
und global
jeweils in einer Browser-, Worker- oder Node.js-Umgebung wird dadurch hinfällig.
Eine Vielzahl der neuen Funktionen wird bereits von bekannten Browsern unterstützt und kann mithilfe des JavaScript-Parsers Babel umgesetzt werden. Nähere Informationen zu den genannten und weiteren Neuerungen finden sich in den entsprechenden auf GitHub abgelegten Dokumenten. (mdo)