Suche
TypeScript 2.7 veröffentlicht

TypeScript 2.7 ist da: Verbesserte Interoperabilität für ECMAScript-Module

Ann-Cathrin Klose

© Shutterstock.com / Stokkete

TypeScript 2.7 wurde veröffentlicht. Mit dabei sind elf neue Features, darunter eine verbesserte Kompatibilität mit JavaScript-Modulen, die in Legacy-Formaten geschrieben wurden. Außerdem ist ein neues Strictness Flag für Class Property Checks in der neuen Version enthalten.

TypeScript 2.7 ist da und bringt zahlreiche Neuerungen für Entwickler mit. Neben der neuen Strictness Flag und der verbesserten Interoperabilität mit ECMAScript-Modulen ist auch eine neue Syntax dabei, die dazu führt, dass Properties auf jeden Fall zugewiesen werden, auch wenn dies nicht dem Standard in TypeScript entspricht. In TypeScript 2.7 ist diese neue Funktion für variable Declarations verfügbar.

Interoperabilität mit ECMAScript-Modulen

Die vereinfachte Interoperabilität mit ECMAScript-Module in TypeScript 2.7 ist auf die Arbeit mit Legacy-Lösungen ausgelegt, die nicht dem ECMAScript-Standard entsprechen. Vor der Veröffentlichung von ECMAScript 2015 gab es verschiedene Lösungen; bis heute gibt es keinen einheitlichen Standard für den Umgang mit Modulen, die in Legacy-Standards geschrieben wurden, so erläutert Daniel Rosenwasser im TypeScript-Blog. TypeScript 2.7 bietet mit --esModuleInterop nun eine neue Compiler-Option, die die Interoperabilität der verschiedenen Lösungen mit ECMAScript verbessern soll. Rosenwasser weist darauf hin, dass die Verwendung vor allem für Nutzer von Node.js empfehlenswert sei.

Mit unique symbol-Types wurden außerdem die Möglichkeiten zur Nutzung von ECMASCript-Symbolen erweitert und flexibler gestaltet. unique symbols sind eine Unterklasse der Symbole, die für statische Properties (readonly) und die Deklaration von Konstanten verwendet werden kann. Wie der Name bereits sagt, handelt es sich um separate Einheiten, die nicht miteinander verglichen oder einander zugewiesen werden können. Rosenwasser führt folgendes Beispiel dafür im Blogpost zum Release an:

One highly-demanded use-case is being able to declare well-typed properties with symbols. For an example, take the following:

const Foo = Symbol("Foo");
const Bar = Symbol("Bar");

let x = {
    [Foo]: 100,
    [Bar]: "hello",
};

let a = x[Foo]; // has type 'number'
let b = x[Bar]; // has type 'string'

Tuples mit fester Länge

Daneben wurde die Ausgabe des --watch Modes überarbeitet. Sobald eine neue Compilierung gestartet wird, wird die Anzeige geleert, sodass neue Benachrichtigungen leichter zu lesen sind.

Wie bereits aus dem Release Candidate von TypeScript 2.7 bekannt ist, kodieren Tuple Types nun außerdem ihre Arität in ihrer jeweiligen length-Eigenschaft. Tuples mit verschiedenen Aritäten können einander nicht mehr zugewiesen werden.

Breaking Changes in TypeScript 2.7

Die vorgenannte feste Länge von Tuple Types wirkt sich auch auf bestehenden Code aus und stellt einen der Breaking Changes des Releases dar. Im Blogpost zum Release werden vier weitere Neuerungen benannt, die zu Problemen mit altem Code führen  können. So unterscheideen sich nun beispielsweise auch die von von instanceof und in vorgenommenen Einschränkungen von einander. Das setSelectionRange-API akzeptiert nun außerdem nur noch „forward“ | „backward“ | „none“.

Eine Zusammenfassung der wichtigsten Änderungen an TypeScript 2.7 kann im Blogpost zum Release nachgelesen werden. Die Roadmap auf GitHub gibt einen Überblick über alle neuen Features der nun veröffentlichten Version sowie über die weitere Planung für TypeScript.

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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.