Knapp zwei Wochen nach dem Release der Beta ist TypeScript 1.6 jetzt in der finalen Version verfügbar. Welche Änderungen seitdem hinzugekommen sind, hat Jonathan Turner, Programm Manager des TypeScript-Teams, via Blogpost zusammengefasst.
React mit JSX-Support
Nachdem man sich die Library React schon in der Beta vorgenommen und um eine neue .tsx File-Extension ergänzt hatte, wurden jetzt die letzten Mängel beseitigt. Von nun an bringt React einen vollen Support für React-Typing und JSX mit. Eingeflossen sind die Neuerungen basierend auf dem Feedback von React-Experten und dem React-Team. Damit dürften Kompatibilitätsprobleme zwischen der Syntax für JSX und der Casting-Syntax, die TypeScript nutzt, endgültig ausgemerzt sein.
Die nachfolgende Abbildung zeigt, wie TypeScript-Code und die JSX-Syntax problemlos nebeneinander koexistieren. Dadurch ist es TypeScript-Entwicklern fortan möglich, HTML-ähnlichen Code mit TypeScript Code zu vermischen.
Das React-Team kommentiert die Änderungen wie folgt:
Our goal was to make it feel natural to work with React/JSX and to have all the type-checking and autocomplete capabilities of TypeScript. This allows you a rich editing experience for working with React and JSX when using VS, VS Code, and Sublime.
Class-Expressions
Aktuell arbeitet man außerdem daran, den ECMAScript6-Support in TypeScript weiter auszubauen. Im Zuge dessen hat das TypeScript-Entwicklerteam jetzt die Möglichkeit eingeführt, Class-Expressions zu schreiben. Ähnlich wie Class-Declarations können Class-Expressions dazu genutzt werden, neue Klassen zu erstellen. Diese wiederum können in der extends-Clause verwendet werden,
Besonders hervor sticht, dass die die Klassen anonym sein und dennoch die gleichen Funktionen wie Class-Declarations aufweisen können.
Abstract-Classes
Ein lang ersehntes Feature für TypeScript ist der Support für Abstract-Classes. Diesem Entwicklerwunsch ist das Entwicklerteam nun nachgekommen:
Similar in some ways to interfaces, abstract classes give you a way of creating a base class, complete with default implementations, that you can build from with the intention of it never being used directly outside of the class hierarchy.
Wie das aussehen kann, zeigt diese Abbildung:
Verbesserungen der Module-Resolution
Auch in Sachen Module Resolution wurden eine Reihe von Verbesserungen umgesetzt. Die Module Resolution des Outputs von CommonJS soll zukünftig ebenso gut wie die von NodeJS funktionieren. Ist ein Modulname nicht-relativ, werden von jetzt an die folgenden Schritte vorgenommen, um zugehörige Typings aufzufinden:
- Check in node_modules for <module name>.d.ts
- Search node_modules\<module name>\package.json for a typings field
- Look for node_modules\<module name>\index.d.ts
- Then we go one level higher and repeat the process
Die Arbeiten an der Module Resolution werden auch weiterhin fortgesetzt. Insbesondere die Asynchronous Module Definition (AMD) soll mit einer der kommenden TypeScript-Versionen verbessert werden.
Ein detaillierter Überblick über alle weiteren Neuerungen findet sich im TypeScript-Blog. Weitere Infos zu den erwähnten Änderungen gibt es außerdem in diesem Beitrag zur TypeScript Beta 1.6.
Aufmacherbild: Retro typewriter background von Shutterstock / Urheberrecht: liravega
[…] eine Preview von EcmaScript6 (ES6) IntelliSense – um sie nutzen zu können, muss allerdings TypeScript 1.6 auf dem Rechner installiert […]