Neue TypeScript-Version im Anmarsch

TypeScript 3.7 Release Candidate mit Optional Chaining erschienen

Maika Möbus

© Shutterstock / Mohd KhairilX

Der Release Candidate für TypeScript 3.7 steht bereit. Darin wurden einige neue Features eingeführt, unter anderem Optional Chaining sowie erweiterter Support für Funktionen, die never ausgeben. Auch Breaking Changes sind wieder mit an Bord.

TypeScript 3.7 RC ist da. Wie bisher soll sich zwischen Release Candidate und dem finalen Release nichts ändern, abgesehen von kritischen Bugfixes. Daniel Rosenwasser, Program Manager bei TypeScript, stellte die wichtigsten Features in einem Blogeintrag vor.

Der RC kann via NuGet, per npm-Befehl npm install typescript@rc oder in Visual Studio 2017/2019 bezogen werden. Daneben kann er auch in VS Code oder Sublime Text genutzt werden.

Optional Chaining

Optional Chaining erlaubt das Schreiben von Code, der das Ausführen mancher Ausdrücke sofort stoppt, wenn null oder undefined auftritt. Das Feature steht hoch im Kurs: Auf GitHub hat das TC39 Proposal 4.400 Sterne erreicht. Es befindet sich bei ECMAScript in Stage 3, woran nach eigener Aussage auch das TypeScript-Team stark beteiligt war. Mit dem Release Candidate wird das Feature nun in TypeScript 3.7 implementiert. Besonders der Operator ?. steht dabei im Rampenlicht, den Daniel Rosenwasser am folgenden Beispiel zeigt:

let x = foo?.bar.baz();

Hiermit wird ausgedrückt, dass foo.bar.baz() berechnet wird, wenn foo definiert ist. Ist foo jedoch null oder undefined, wird die Ausführung gestoppt und undefined ausgegeben.

Das obige Code-Snippet sei mit diesem gleichzusetzen:

let x = (foo === null || foo === undefined) ?
    undefined :
    foo.bar.baz();

Wenn bar entweder null oder undefined ist, wird der Code weiterhin beim Aufruf von baz einen Error erzeugen. Ist baz entweder null oder undefined, tritt ebenfalls ein Error auf. ?. prüft also nur, ob der links davon liegende Wert null oder undefined ist, jedoch nicht die nachfolgenden Eigenschaften. Es sollte zudem beachtet werden, dass sich ?. nicht identisch zu &&-Operationen verhält, an deren Stelle es voraussichtlich oft eingesetzt werden wird.

Weitere Features und Breaking Changes

Im neuen Release Candidate für TypeScript 3.7 gibt es erweiterten Support für Funktionen, die never ausgeben, sodass ein return nach Failure Functions nicht mehr nötig ist.

Als Beispiel dafür wurde zunächst die bisherige Methode gezeigt:

function dispatch(x: string | number): SomeType {
    if (typeof x === "string") {
        return doThingWithString(x);
    }
    else if (typeof x === "number") {
        return doThingWithNumber(x);
    }
    return process.exit(1);
}

Und anschließend die neue Methode in TypeScript 3.7 RC:

function dispatch(x: string | number): SomeType {
    if (typeof x === "string") {
        return doThingWithString(x);
    }
    else if (typeof x === "number") {
        return doThingWithNumber(x);
    }
    process.exit(1);
}

Daneben hat ein weiteres angehendes ECMAScript-Feature im RC Einzug gehalten: der Nullish Coalescing Operator, der mit Optional Chaining einhergeht. Auch Assertion Signatures zum Modellieren von Assertion Functions sowie zusätzliche rekursive Alias Types sind neu.

Zu den Breaking Changes zählt ein Update der Typen lib.dom.d.ts sowie eine Error-Ausgabe, wenn Funktionen innerhalb von If-Statement-Bedingungen scheinbar nicht aufgerufen werden. Auch wurde ein bisher bestehender Bug behoben, was jetzt dazu führt, dass lokale und importierte Typendeklarationen einen Konflikt erzeugen.

Alle weiteren Details zu TypeScript 3.7 Release Candidate bietet Daniel Rosenwasser im Blogeintrag.

Verwandte Themen:

Geschrieben von
Maika Möbus
Maika Möbus
Maika Möbus ist seit Januar 2019 Redakteurin bei Software & Support Media. Zuvor studierte sie Soziologie an der Goethe-Universität Frankfurt und an der Johannes Gutenberg-Universität Mainz.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
4000
  Subscribe  
Benachrichtige mich zu: