JavaScript

Neue TypeScript-Version im Anmarsch

TypeScript 3.7 Release Candidate mit Optional Chaining erschienen
Keine Kommentare

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.

IT Security Summit 2019

Sichere Logins sind doch ganz einfach!

mit Arne Blankerts (thePHP.cc)

Hands-on workshop – Hansel & Gretel do TLS

mit Marcus Bointon (Synchromedia Limited)

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.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu:
X
- Gib Deinen Standort ein -
- or -