Programmiersprache: TypeScript 4.3 verfeinert Arbeit mit Template String Types
Außerdem erlaubt die nun allgemein verfügbare Version unterschiedliche Typdeklarationen für das Setzen von Properties und erweitert Methoden für Privatsphäre.
- Silke Hahn
Rund zwei Monate nach der ersten Beta hat Microsoft TypeScript 4.3 als stabiles Release allgemein verfügbar gemacht. Mit der Skriptsprache lassen sich statische Typen in der JavaScript-Syntax ergänzen, die der TypeScript-Compiler recht einfach wieder entfernen kann. Sinn und Zweck der Sprache ist das Prüfen von Typen, um korrekteren JavaScript-Code zu erstellen: TypeScript findet Tippfehler und logische Fehler, Entwicklerinnen und Entwickler können es als eine Art "Power-Editor" einsetzen mit Tools zur Code-Vervollständigung, Umbenennung und für Go-to-Definitionen.
Neues bei den Properties und String Literal Types
TypeScript 4.3 führt eine Reihe von Neuerungen ein: So erlaubt das Release seinen Nutzerinnen und Nutzern individuelles Zuweisen von Typen zum Auslesen und Schreiben der Properties über die Getter und Setter. Dafür hat das TypeScript-Team bei den Typen für Interfaces und Objects neue Syntax ergänzt, die unterschiedliche Auslese/Schreib-Typen bei den Properties ermöglicht. Neuerdings versucht die Skriptsprache nun auch immer dem Ausdruck direkt einen Template-Typen zuzuweisen, wenn ein String Literal Type einen Template String anlegt. Zugleich soll TypeScript mittlerweile auch besser zwischen verschiedenen String-Typen Bezüge herstellen können.
Override gegen versehentliches Einstampfen von Methoden
Eine weitere Neuerung betrifft das Überschreiben von Funktionen, was (wie in JavaScript) grundsätzlich ohne Kennzeichnung funktioniert. In vorherigen TypeScript-Versionen war es nicht möglich, zwischen dem Ergänzen einer neuen Methode und dem Überschreiben einer bestehenden zu unterscheiden. Oft blieben alte Methoden stehen, während die neuen parallel dazu existierten, aber nicht sauber eingebunden waren und sich nicht aufrufen ließen.
Mit dem neuen Keyword override
räumt TypeScript damit auf, indem es sicherstellt, dass in der Basisklasse eine zu überschreibende Methode überhaupt existiert. Analog dazu bietet das Release auch einen zusätzlichen Parameter namens --noImplicitOverride
, um nicht versehentlich Methoden der Basisklasse "niederzutrampeln", sollte man einmal vergessen haben, das override
ordnungsgemäß zu setzen.
class SomeComponent {
setVisible(value: boolean) {
// ...
}
}
class SpecializedComponent extends SomeComponent {
override show() {
// ~~~~~~~~
// Error! This method can't be marked with 'override'
because it's not declared in 'SomeComponent'.
// ...
}
// ...
}
Privatsphäre ist ausgebaut
Bisher konnten Entwicklerinnen und Entwickler in TypeScript-Klassen lediglich Properties durch #
als privat kennzeichnen und so den Zugriff von außen verbieten. Mit dem aktuellen Release dürfen zusätzlich Methoden und Zugriffsfunktionen privat sein, hierfür sorgt das ECMAScript-Klassenelement #private
. Auch für statische Elemente ist nun eine Kennzeichnung als "privat" möglich, lässt sich dem Blogeintrag entnehmen.
Bei der Arbeit mit abstrakten Klassen greifen die neuen ConstructorParameters
Entwicklerinnen und Entwicklern in TypeScript 4.3 unter die Arme – bereits in TypeScript 4.2 ließen sich Construct Signatures als "abstrakt" kennzeichnen. Darauf baut die neue Version auf, wie ein Codebeispiel zeigt:
abstract class C {
constructor(a: string, b: number) {
// ...
}
}
// Has the type '[a: string, b: number]'.
type CParams = ConstructorParameters<typeof C>;
Wer einen praktischen Einstieg in die Skriptsprache sucht, kann am 11. Juni in einem ganztägigen Online-Workshop lernen, wie man Webanwendungen mit TypeScript und React erstellt.
Im Workshop erfahren Teilnehmer, wie sie React-Anwendungen mit TypeScript typsicher bauen können. Wer teilnimmt, bekommt einen praktischen Eindruck von der Entwicklung mit React. Neben den Übungen bleibt viel Zeit für eigene Fragen an den versierten Trainer Nils Hartmann.
Type-Narrowing bei den generischen Werten
Das Entwicklerteam hat TypeScript 4.3 eine laut eigenen Angaben "schlauere" Logik zur Eingrenzung von Typen bei den generischen Werten verpasst. So soll die neue Version gezielt die genauen Typen-Deklarationen aufspüren, um offenbar häufig aufgetretene Fehler bei einer zu oberflächlichen Typen-Prüfung zu vermeiden.
Weitere Änderungen betreffen unter anderem die Lazier Calculations (beispielsweise beim inkrementellen Kompilieren), reduzierte Dateigrößen in inkrementellen Builds (konkret geht es um die Datei .tsbuildinfo) und den Import von Statement-Vervollständigungen. Alle Neuerungen, Breaking Changes und vertiefende Informationen dazu lassen sich dem ausführlichen Blogeintrag zum Release entnehmen.
(sih)