Neues bei TypeScript

TypeScript 4.1 veröffentlicht: rekursive Conditional Types, JSX Factories für React und mehr

Ann-Cathrin Klose

© Shutterstock / BrAt82

Mit TypeScript 4.1 steht das nächste große Update für die Programmiersprache bereit. Die neue Version ist voll mit spannenden Features: Dazu gehört nicht nur, dass die neuen JSX Factories aus React 17 nun unterstützt werden. Auch für verschiedene Arten von Types finden sich Neuerungen im Release.

TypeScript 4.1 ist da und bringt viele Änderungen mit: Die neue Version der Sprache hat zahlreiche Features im Gepäck, umfasst aber auch Breaking Changes. Wie immer gilt bei TypeScript, dass nicht im klassischen Stil der semantischen Versionierung gearbeitet wird. Release 4.1 bietet Entwicklern also keine Pause hinsichtlich der möglicherweise nötigen Anpassungen am Code. Was hat sich verändert?

TypeScript 4.1: Neue Sprachfeatures

Für React-Entwickler bringt TypeScript 4.1 Support für die neuen JSX Factories mit. Dafür wurden zwei neue Optionen zum JSX-Compiler hinzugefügt, die entsprechend ihrer Namen für die Entwicklung und die Produktion gedacht sind: react-jsx und react-jsxdev. Für die Arbeit mit TypeScript in Editoren steht nun eine bessere Unterstützung für das JSDoc-Tag @see zur Verfügung. Das soll die Usability von TypeScript 4.1 verbessern.

Aber was hat sich auf der Ebene der namensgebenden Types getan? TypeScript 4.1 umfasst natürlich nicht nur die zuvor genannten kleineren Neuerungen, sondern bringt auch jede Menge neuer Sprachfeatures mit. Dazu gehören die neuen Template Literal Types, die genutzt werden können, um String Literal Types zu erstellen. Die neuen Types entsprechen der Syntax der Template Literal Strings in JavaScript, werden aber in Type-Positionen eingesetzt. Ein Beispiel dafür findet sich im Blogpost zum Release von TypeScript 4.1.

Für Mapped Types gibt es ebenfalls etwas Neues im Release: Bislang konnten Mapped Types nur neue Object Types erstellen, wenn die notwendigen Keys bereits angegeben waren. Mit diesem Update für TypeScript ist es nun auch möglich, Keys neu zuzuweisen, indem der Ausdruck as in Mapped Types verwendet wird. News gibt es außerdem auch für Conditional Types: Hier wurden einige Einschränkungen gelockert, sodass Conditional Types nun rekursiv einsetzbar sind. Sie dürfen nun also innerhalb ihres eigenen Code-Abschnitts auf sich selbst verweisen. Diese Anpassung am Verhalten von TypeScript soll es Entwicklern erleichtern, rekursive Type-Aliasse zu schreiben.

Breaking Changes in v4.1

Wie bereits zu Beginn erwähnt, bringt TypeScript 4.1 aber auch Breaking Changes mit, die anders als bei anderen Tools sofort Auswirkung haben, nicht erst zum nachfolgenden Major-Release. TypeScript verwendet zwar ein Nummerierungsformat, das an die semantische Versionierung erinnert, folgt aber diesem Schema nicht. Jede neue Version kann Breaking Changes und große Feature-Änderungen mitbringen, das TypeScript-Team begrenzt solche Eingriffe in die Sprache nicht auf die Versionen, die mit einer vollen Zahl nummeriert werden.

Zu den Breaking Changes in v4.1 gehört beispielsweise, dass sich einige APIs von lib.d.ts verändert haben könnten. Definitiv entfernt wurde Reflect.enumerate; zu den weiteren möglichen Anpassungen gibt es im Blogpost zum Release keine näheren Angaben, da diese von den automatisch erzeugten DOM Types im spezifischen Projekt abhängen. Ebenfalls als Breaking Change gelistet ist, dass resolve in Promises künftig mindestens einen Wert übergeben bekommen muss. Bisher waren die Parameter hier optional zu setzen; das ist nicht mehr der Fall. Code-Stellen, die resolve ohne Parameter nutzen, geben in Zukunft einen Fehler aus.

Die hier genannten Neuerungen an TypeScript 4.1 stellen natürlich keine abschließende Liste dar. Einen Überblick mit Erklärungen zu allen Neuerungen gibt Daniel Rosenwasser, Program Manager für TypeScript, im offiziellen Blogpost zum Release. Die nachfolgende Version, TypeScript 4.2, soll am 23. Februar 2021 final veröffentlicht werden. Laut Roadmap ist geplant, strenge override-Checks einzuführen. Das steht in Verbindung mit der Diskussion um die Einführung des Keywords override in Class-Methoden, die bereits 2015 angestoßen worden war. Im Mai 2020 wurde das Thema erneut aufgegriffen.

Verwandte Themen:

Geschrieben von
Ann-Cathrin Klose
Ann-Cathrin Klose
Ann-Cathrin Klose hat allgemeine Sprachwissenschaft, Geschichte und Philosophie an der Johannes Gutenberg-Universität Mainz studiert. Bereits seit Februar 2015 arbeitete sie als redaktionelle Assistentin bei Software & Support Media und ist seit Oktober 2017 Redakteurin. Zuvor war sie als freie Autorin tätig, ihre ersten redaktionellen Erfahrungen hat sie bei einer Tageszeitung gesammelt.
Kommentare

Hinterlasse einen Kommentar

avatar
4000
  Subscribe  
Benachrichtige mich zu: