Neue Version des typisierten JavaScript

TypeScript 3.1 verfügbar: Das sind die neuen Features

Hartmut Schlosser

© Shutterstock / rangizzz

Die JavaScript-Variante TypeScript ist in Version 3.1 erschienen. Neuerungen betreffen das Mapping von Tuple und Array-Typen sowie das Verknüpfen von Properties mit Funktionen.

TypeScript 3.1: Properties & Funktionen

Neu in TypeScript 3.1 ist die Art und Weise, wie Properties an Funktionsdeklarationen übergeben werden. Was hat es damit auf sich?

In TypeScript gibt es das Konstrukt der Namespaces. Neben der Organisation des Quellcodes unterstützen Namespaces auch das Konzept des sogenannten Value Merging. Dadurch ist es möglich, Klassen und Funktionen auf deklarative Art und Weise Properties mitzugeben. Auf dem MSDN-Blog wird dieses Feature an folgendem Beispiel demonstriert:

export function readFile() {
    // ...
}

export namespace readFile {
    export function async() {
        // ...
    }
}

Nun haben sich in der Community allerdings ECMAScript-Module durchgesetzt, um neuen Quellcode zu organisieren. Namespaces haben den Nachteil, TypeScript-spezifisch zu sein und darüberhinaus nicht mit Deklarationen von var, let oder const zu funktionieren.

Die folgenden beiden Codebeispiele lassen sich deshalb nicht ineinander überführen:

Beispiel 1

export const FooComponent => ({ name }) => (
    
<div>Hello! I am {name}</div>

);

FooComponent.defaultProps = {
    name: "(anonymous)",
};

Beispiel 2

export const FooComponent => ({ name }) => (
    
<div>Hello! I am {name}</div>

);

// Doesn't work!
namespace FooComponent {
    export const defaultProps = {
        name: "(anonymous)",
    };
}

Wie Daniel Rosenwasser auf dem MSDN-Blog ausführt, hat sich das TypeScript-Team dazu entschieden, TypeScript in solchen Fällen intelligenter zu machen. Bei jeder Deklaration einer Funktion oder einer const, die durch eine Funktion initialisiert wird, analysiert der Typen-Checker in TypeScript 3.1 nun den Scope, um verbundene Porperties zu erkennen. Im Ergebnis funktionieren in TypeScript 3.1 deshalb beide der oberen Beispiele readFile und FooComponent.

Dieses neue Feature soll insbesondere in Verbindung mit JSX.LibraryManagedAttributes die Migration von nicht typisierten React-Codebasen nach TypeScript vereinfachen.

Weitere Neuerungen in TypeScript 3.1

Ebenfalls neu in TypeScript 3.1 ist ein Refactoring, das es erlaubt, Funktionen, die Promises mit Ketten von .then() und .catch() zurückliefern, in asynchrone Funktionen zu überführen, die die await-Anweisung nutzen.  In der Bibliothek lib.d.ts wurden zudem einige Anbieter-spezifische Typen entfernt, was ggf. bei einer Migration älterer TypeScript-Projekte auf die Vesion 3.1 angepasst werden muss. Ebenfalls beachtet werden sollte bei Migrationen, dass die Anweisung typeof foo === „function“ in TypeScript 3.1 unter gewissen Umständen andere Ergebnisse liefert.

Details zu den Neuerungen in TypeScript 3.1 können Interessierte auf dem MSDN-Blog nachlesen. Bezogen werden kann TypeScript 3.1 kostenlos via NuGet oder npm (npm install -g typescript). Editor-Support ist gegeben für Visual Studio 2017 (ab Version 15.2), Visual Studio 2015 (ab Update 3), Visual Studio Code (via Insiders Release  und Sublime Text 3 (via PackageControl).

 

Verwandte Themen:

Geschrieben von
Hartmut Schlosser
Hartmut Schlosser
Content-Stratege, IT-Redakteur, Storyteller – als Online-Teamlead bei S&S Media ist Hartmut Schlosser immer auf der Suche nach der Geschichte hinter der News. SEO und KPIs isst er zum Frühstück. Satt machen ihn kreative Aktionen, die den Leser bewegen. @hschlosser
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: