Programmiersprache: TypeScript 4.6 ist flexibler und auskunftsfreudiger

Die neue Version erlaubt Code im Konstruktor vor super() sowie das neue Ausgabeziel ES2022 und zeigt Unstimmigkeiten in JSDoc-Parametern an.

In Pocket speichern vorlesen Druckansicht
Schreibmaschine, Tastatur, Keyboard, Digitalisierung

(Bild: , gemeinfrei)

Lesezeit: 3 Min.
Inhaltsverzeichnis

Nach einer Beta-Version und einem Release Candidate steht nun die finale Version TypeScript 4.6 bereit. Sie bringt sowohl die bereits angekündigten Neuerungen wie zulässigen Code im Konstruktor vor super() als auch weitere Funktionen, die nun ebenfalls eine ausführliche Dokumentation erhalten haben. Dazu zählen Kontrollflussanalyse für destrukturierte Discriminated Unions, das neue Ausgabe-Target es2022 und Vorschläge für JSDoc-Parameternamen.

In TypeScript lassen sich durch die --target-Option die JavaScript-Sprachversion für ausgegebenen JavaScript-Code festlegen sowie kompatible Bibliothek-Deklarationen einbinden. TypeScript 4.6 erlaubt erstmals die Verwendung von es2022 als Target. Somit erhalten ECMAScript2022-Features wie Class Fields ein stabiles Ausgabeziel und Built-in-Funktionen wie die at()-Methode auf Arrays lassen sich sowohl mit der neuen --target-Einstellung es2022 als auch mit --lib22 nutzen.

TypeScript 4.6 erkennt, wenn JSDoc-Parameternamen nicht mit TypeScript-Funktionen übereinstimmen, und macht einen entsprechenden Fund im Editor sichtbar. In der Markup-Sprache JSDoc lassen sich Parameter mittels @param-Tag dokumentieren. Bei einer Diskrepanz zwischen JSDoc-Parametername und TypeScript-Funktion unterbreitet der verwendete Editor nun einen Vorschlag:

TypScript 4.6 zeigt im Editor Vorschläge an, wenn JSDoc-Parameter nicht mit einer TypeScript-Funktion übereinstimmen.

(Bild: Microsoft)

Bisher gab es in TypeScript einzig beim Type-Checking von JavaScript-Dateien Informationen über JSDoc-Unstimmigkeiten, entweder durch den Einsatz der checkJs-Option oder durch die Eingabe des Kommentars // @ts-check zu Beginn einer Datei.

Darüber hinaus führt TypeScript 4.6 eine Kontrollflussanalyse für abhängige Parameter und Variablen ein, die durch das Destrukturieren von Discriminated Unions entstehen. Bisher führte das zu einem Fehler.

Bereits seit der im Januar erschienenen Beta-Version ist bekannt, dass die Sprachversion 4.6 einen flexibleren Umgang mit dem Konstruktor super() zulässt, da dieser in seiner Strenge scheinbar über das Ziel hinausschoss. Code vor dem Konstruktor führt nun nicht mehr ausnahmslos zu einem Fehler.

In JavaScript-Klassen ist es notwendig, super() vor einem Referenzieren von this aufzurufen. TypeScript ging dabei einen Schritt weiter und warf für jeglichen Code in einem Konstruktor vor super() einen Fehler aus, wenn dessen enthaltene Klasse Eigenschaften-Initialisierer aufwies. Das konnte fälschlicherweise auch gültigen Code betreffen. In der neuen Ausgabe der Programmiersprache lässt sich anderer Code vor super() ausführen, sofern super() vor einer Referenz auf this auf dem Top-Level erscheint.

Mit dem Release von Version 4.6 ist die Vorschau für TypeScript 4.7 erschienen, die einen Überblick über geplante Features sowie Release-Daten bereithält. Demnach ist mit der Beta-Version am 5. April 2022 zu rechnen, allerdings weist das Entwicklerteam darauf hin, dass "nichts in Stein gemeißelt ist". TypeScript 4.6 war ursprünglich für den 22. Februar angesetzt und weicht somit um rund eine Woche vom Plan ab.

Weitere Informationen zu den Neuerungen in TypeScript 4.6 lassen sich dem Microsoft-Entwicklerblog entnehmen.

(mai)