TypeScript 3.8 fügt Nur-Typ-Importe und -Exporte hinzu

TypeScript 3.8, eine neue Version von Microsofts typisierter Obermenge von JavaScript, ist jetzt als Produktionsversion verfügbar. Das neueste TypeScript-Upgrade konzentriert sich auf Nur-Typ-Importe und -Exporte sowie auf die Einhaltung der ECMAScript-Standards.

Die Version fügt eine neue Syntax für Nur-Typ-Importe und -Exporte hinzu, um den Benutzern eine genauere Kontrolle über Import und Elision zu ermöglichen. Die import typeSyntax importiert nur Deklarationen, die für Typanmerkungen und Deklarationen verwendet werden sollen, und wird immer vollständig gelöscht. Die  export type Syntax bietet nur einen Export, der für Typkontexte verwendet werden soll, und wird aus der TypeScript-Ausgabe gelöscht.

TypeScript hat die Importsyntax von JavaScript verwendet, um Referenztypen zu aktivieren. Die Funktion war zwar praktisch, funktionierte jedoch nur aufgrund der Import-Elisionsfunktion, bei der TypeScript-Typimporte weggelassen werden, wenn TypeScript JavaScript-Dateien ausgibt. Die Importentscheidung war jedoch sowohl unzureichend als auch problematisch.

In Verbindung mit  import typeTypeScript 3.8 wird außerdem ein Compiler-Flag hinzugefügt, um zu steuern, was mit Importen geschieht, die zur Laufzeit nicht verwendet werden :  importsNotUsedAsValues.

In Bezug auf den ECMAScript-Standard für JavaScript bietet TypeScript 3.8 Unterstützung für private ECMAScript-Felder, die Teil eines Deklarationsvorschlags für Klassenfelder für JavaScript ist. Öffentliche und private Felder werden gemäß diesem Vorschlag in ein einziges orthogonales Ganzes integriert.

Weitere in TypeScript 3.8 versprochene Verbesserungen sind:

  • Inkrementelle Typprüfung „Schnell und locker“ mit Compileroption assumeChangesOnlyAffectDirectDependencies. Diese Option kann die Erstellungszeiten in bestimmten Dateien verkürzen, da TypeScript nur geänderte Dateien sowie Dateien, die sie direkt importieren, erneut überprüft / neu erstellt. Es wird für große Codebasen empfohlen, bei denen Entwickler bereit sind, vollständige Projektfehler auf einen späteren Zeitpunkt zu verschieben.
  • Implementierung des Exports als * nsSyntax mit einem einzigen Einstiegspunkt, um alle Mitglieder eines anderen Moduls als ein einziges Mitglied verfügbar zu machen.
  • Top-Level await, eine bevorstehende ECMAScript-Funktion zum Aufheben von Einschränkungen bei der Verwendung eines awaitAusdrucks am Anfang einer Datei unter bestimmten Bedingungen.
  • JavaScript-Dateien werden in TypeScript 3.8 durch Aktivieren des allowJsFlags unterstützt. Die Typprüfung dieser Dateien wird über die checkjsOption oder durch Hinzufügen eines // @ ts-check-Kommentars oben in den .js-Dateien unterstützt. Neue JSDoc-Tags werden für Eigenschaften genutzt, da JavaScript-Dateien keine dedizierte Syntax für die Typprüfung haben.
  • Ein watchOptionsFeld in tsconfig.jsonund jsconfig.jsonermöglicht es Benutzern, dem Compiler / Sprachdienst mitzuteilen, welche Strategien zur Dateiüberwachung verwendet werden sollen, um Dateien und Verzeichnisse zu verfolgen.
  • Ein Refactoring zum Konvertieren von Zeichenfolgenverkettungen.
  • Strengere Zuweisbarkeitsprüfungen für Gewerkschaften mit Indexsignaturen, eine bahnbrechende Änderung.
  • In einer weiteren bahnbrechenden Änderung ist objectin JSDoc nicht mehr anyunter noImplicitAny.

Sie können die allgemeine Version von TypeScript 3.8 über NuGet oder über NPM installieren:

npm install typescript