Programmiersprache TypeScript 3.8 verfügt über eine neue Syntax für Importe und Exporte
Mit TypeScript 3.8 können Entwickler auf eine neue Syntax zurückgreifen, die den Import und Export reiner Typen klarer machen soll.
- Björn Bohn
Microsoft hat Version 3.8 des JavaScript-Supersets TypeScript veröffentlicht. Zu den Änderungen zählen unter anderem Importe und Exporte für reine Typen, die für ECMAScript 2020 vorgeschlagenen Private Fields und die export * as ns
-Syntax sowie die Möglichkeit await
in der obersten Ebene eines Moduls einzusetzen. Wie üblich hat sich an den Features seit dem Veröffentlichen der Beta-Version wenig geändert.
Imports und Exports im Detail
Durch die neuen Importe und Exporte sollen Entwickler eine bessere Kontrolle über die Befehle bekommen und so eine Reihe möglicher Probleme umgehen können. Die Syntax dafür sieht wie folgt aus:
import type { SomeThing } from "./some-module.js";
export type { SomeThing };
Dabei überführt import type
nur die Declarations, die Entwickler für Type-Annotationen oder andere Declarations verwenden wollen. TypeScript löscht sie immer vollständig, sodass keine Rückstände bei der Laufzeit zurückbleiben. export type
funktioniert analog dazu für Type Contexts.
Microsoft hat außerdem eine neue Flag vorgestellt: importsNotUsedAsValues
. Sie bestimmt darüber, was mit Importen passiert, die bei der Laufzeit nicht genutzt werden. Sie kann die Werte remove
, preserve
und error
annehmen. Ersteres entfernt die Importe, zweiteres behält sie. Die dritte Option erhält sie ebenfalls, wirft allerdings einen Fehler, wenn ein Wertimport nur als Type verwendet wird.
ECMAScript-Funktionen in TypeScript
Private Fields liegen derzeit als Stage-3-Proposal für ECMAScript vor, gelten also als potenzieller Kandidat für den Sprachstandard. Durch die Definition von Dingen, die außerhalb der Klasse nicht sichtbar sind, bietet das Feature eine stärkere Kapselung, die sicherstellen soll, dass Abhängigkeiten von Interna Benutzer von Klassen nicht versehentlich verwirren. TypeScript-Nutzer können bereits jetzt darauf zugreifen.
TypeScript-Entwickler wollen häufig einen einzelnen Einstiegspunkt definieren, der alle Member eines Moduls als einzelnen Member ausgibt. Dazu gibt es nun eine neue Syntax, die die Funktion wie folgt umsetzt:
export * as utilities from "./utilities.js";
Um die Einführung einer async
-Funktion zu vermeiden, führt TypeScript das Feature-Top-Level await
ein. Bisher war in JavaScript await
nur innerhalb des Body einer async
-Funktion erlaubt. Mit dem neuen Feature können Entwickler jedoch await
auf der obersten Ebene eines Moduls verwenden.
Eine vollständige Liste der Änderungen bietet der TypeScript-Blog. Wer die neue Version testen möchte, kann das unter anderem mit dem Befehl npm install typescript
tun.
(bbo)