Programmiersprachen: TypeScript 3.0 ist fertig

Projektreferenzen, erweiterte Tuples und ein neuer unknown-Type: Das sind die größten Änderungen in der neuen Hauptversion des JavaScript-Supersets TypeScript.

 –  6 Kommentare
Programmiersprache: TypeScript 3.0 ist fertig

Knapp zwei Wochen nach dem Release Candidate hat Microsoft die fertige Version 3.0 des JavaScript-Supersets TypeScript veröffentlicht: Im Vergleich zum Release Candidate hat sich bei TypeScript nicht mehr viel getan: Die neue Version bringt wie erwartet Projektreferenzen, Erweiterungen für Tuples sowie den neuen unknown-Typ als größte Neuerungen mit.

Mit den Projektreferenzen können TypeScript-Projekte in Zukunft von anderen TypeScript-Projekten abhängig sein. Das bedeutet, dass die tsconfig.json-Dateien andere tsconfig.json referenzieren können. Dadurch lässt sich der Programmcode in kleinere Projekte aufteilen und ermöglicht TypeScript, Build-Reihenfolgen und Output-Strukturen zu verstehen.

Darüber hinaus sollen Entwickler mit der neuen --build-Flag Applikationen, die nicht auf externe Werkzeuge angewiesen sind, in Zukunft einfacher erstellen können. Sie nimmt dabei eine Anzahl von Projekten und baut sie und ihre Abhängigkeiten auf. Nutzer müssen dazu die --build-Flag als Erstes setzen, können sie aber durch die folgenden Flags ergänzen:

  • --verbose: zeigt jeden für den Build benötigten Schritt an,
  • --dry: führt einen Build ohne Dateiausgabe aus,
  • --clean: versucht, Ausgabedateien auf Basis des Inputs zu entfernen, und
  • --force: erzwingt einen vollen nicht-schrittweisen Rebuild eines Projekts.

Die Tuple-Types haben in TypeScript 3.0 einige Erweiterungen erhalten. Bisher konnten sie nur die Reihenfolge und Anzahle eines Sets von Parametern modellieren. Allerdings können Parameterlisten auch optionale Parameter oder Rest-Parameter am Ende enthalten – oder gar völlig leer sein. All diese Varianten sind jetzt ebenfalls mit Tuples möglich.

Grund dafür ist, dass TypeScript Parameterlisten jetzt genau wie JavaScript extrahieren und verteilen können soll. Dies war bisher nur umständlich mit dem Deklarieren einer endlichen Anzahl von Overloads möglich. In TypeScript 3.0 können Rest-Parameter jetzt jedoch generisch sein und diese Generics wiederum als Tuple-Types abgeleitet werden. Die obige Erweiterung der Tuples war der notwendige Grundstein für diese Funktion.

Microsoft führt in Version 3.0 einen neuen Typ namens unknown ein. Er ist in Anlehnung an den vorhandenen any-Typ konzipiert, der jeden möglichen Typ-Wert einschließt, sodass Entwickler nichts überprüfen müssen, bevor sie versuchen, ihn aufzurufen. Laut Microsoft kann dies zwar nützlich sein, sei in einigen Anwendungen aber nicht strikt genug.

Hier kommt der neue unknown-Typ ins Spiel: Genau wie any kann ihm jeder Wert zugeordnet werden – allerdings kann er, im Gegensatz zu any, ohne Type Assertion zu nichts zugeordnet werden. Es ist außerdem unmöglich, auf Properties von einem unknown-Typ zuzugreifen oder sie aufzurufen. Dadurch sollen Anwender gezwungen sein, zurückgegebene Werte zu prüfen.

Auch wenn es sich bei TypeScript 3.0 um eine neue Hauptversion handelt, verspricht Microsoft, dass sich die Breaking Changes im Vergleich zur Vorgängerversion in Grenzen halten. Eine vollständige Liste der Änderungen findet sich in der offiziellen Ankündigung. (bbo)