TypeScript: Typisiertes JavaScript
Verbesserte Wartbarkeit durch Nutzung eines Typsystems
Je größer eine JavaScript-Anwendung wird, desto schwieriger wird es, sie zu warten und zu erweitern. Schnell schleicht sich ein Fehler ein, der aufgrund der dynamischen Natur der Sprache erst zur Laufzeit bemerkt wird. Genau hier setzt TypeScript an, indem es JavaScript um ein statisches Typsystem erweitert. Dieses fängt viele Programmierfehler bereits zur Kompilierzeit ab.
Des Weiteren bildet TypeScript die Grundlage für intelligentes IDE-Tooling wie Autovervollständigung, Refactorings und Navigation durch die Codebasis. Damit trägt es zur Produktivität bei und macht die alltägliche Arbeit angenehmer. Schlussendlich unterstützt TypeScript auch die neuesten JavaScript-Sprachfeatures und generiert lesbaren Code, der in allen gängigen Browsern ausgeführt werden kann.
Einführung
- Ein statisches Typsystem für JavaScript
- Kompatibilität mit dem ECMAScript-Standard
- Übersetzung nach JavaScript (ES6, ESNext)
- Integration in IDEs und Texteditoren
Grundlagen des Typsystems
- Was ein Typsystem ist
- Primitive Datentypen
- Der
any
-Typ Array*
und Tupel-Typen- Objekt-Typen und Interfaces
- Funktions-Typen
- Enumerationen und Flags
- Automatische Typherleitung durch Type Inference
- Strukturelle vs. nominale Typisierung
Fortgeschrittene Typen
- Generische Typen und Typ-Aliase
- Umgang mit
null
undundefined
mit Non-Nullable Types - Beschreibung primitiver Werte mit Literal Types
- Vereinigungen verschiedener Typen mit Union Types
- Schnittmengen verschiedener Typen mit Intersection Types
- Modellierung von Alternativen mit Discriminated Union Types
Strukturierung einer Codebasis
- Modularisierung mit nativen ES6-Modulen
- Import und Export von Bindings und Typen
- Übersetzung in verschiedene Modulsysteme (z. B. CommonJS)
- Klassen und wann Klassen genutzt werden sollten
- Klassenbasierte vs. prototypenbasierte Objektorientierung
- Klassen und Vererbung
- Sichtbarkeits- und Zugriffsmodifikatoren
Integration ins JavaScript-Ökosystem
- Verwendung von JavaScript-Bibliotheken
- Typisierung von Bibliotheken über Deklarationsdateien
- Bezug von Deklarationsdateien für Bibliotheken über npm
- Migration existierender Codebasen auf TypeScript
Sonstiges
- Experimentelle und zukünftige Features wie z. B. Dekoratoren
- Sicherstellung der Codequalität mithilfe von ESLint