Inhalt
Vorwort
1Einführung
2TypeScript aus der Vogelperspektive
Der Compiler
Das Typsystem
TypeScript im Vergleich mit JavaScript
Einrichtung des Codeeditors
tsconfig.json
tslint.json
index.ts
Übungen
3Alles über Typen
Wo wir gerade von Typen sprechen
Das ABC der Typen
any
unknown (unbekannt)
boolean (boolescher Wert)
number (Zahl)
bigint
string (String, Zeichenkette)
symbol (Symbole)
Objekte
Kurze Unterbrechung: Typaliase, Vereinigungs- und Schnittmengen
Arrays
Tupel
null, undefined, void und never
Enums
Zusammenfassung
Übungen
4Funktionen
Funktionen deklarieren und aufrufen
Optionale und Standardparameter
Restparameter
call, apply und bind
this typisieren
Generator-Funktionen
Iteratoren
Aufrufsignaturen (Call Signatures)
Kontextabhängige Typisierung
Überladene Funktionstypen
Polymorphismus
Wann werden Generics gebunden?
Wo können Generics deklariert werden?
Generische Typableitung
Generische Typaliase
Begrenzter Polymorphismus
Generische Standardtypen
Typgetriebene Entwicklung
Zusammenfassung
Übungen
5Klassen und Interfaces
Klassen und Vererbung
super
this als Rückgabetyp verwenden
Interfaces
Deklarationen verschmelzen
Implementierungen
Implementierung von Interfaces im Vergleich mit der Erweiterung abstrakter Klassen
Klassen sind strukturell typisiert
Klassen deklarieren Werte und Typen
Polymorphismus
Mixins
Dekoratoren
Finale Klassen simulieren
Entwurfsmuster (Design Patterns)
Factory-Muster
Builder-Muster
Zusammenfassung
Übungen
6Fortgeschrittene Typen
Beziehungen zwischen Typen
Subtypen und Supertypen
Varianz
Zuweisbarkeit
Typerweiterung
Typverfeinerung (refinement)
Totalität
Fortgeschrittene Objekttypen
Typoperatoren für Objekttypen
Der Record-Typ
Abgebildete Typen
Das Companion-Objektmuster
Fortgeschrittene Funktionstypen
Typinferenz für Tupel verbessern
Benutzerdefinierte Type Guards (Typschutz)
Konditionale Typen
Distributive Bedingungen
Das Schlüsselwort infer
Eingebaute konditionale Typen
Notausgänge
Typzusicherungen (type assertions)
Nicht-null-Zusicherungen
Zusicherungen für definitive Zuweisungen
Nominale Typen simulieren
Prototypen sicher erweitern
Zusammenfassung
Übungen
7Fehlerbehandlung
Die Rückgabe von null
Ausnahmen auslösen
Ausnahmen zurückgeben
Der Option-Typ
Zusammenfassung
Übung
8Asynchrone Programmierung, Nebenläufigkeit und Parallelismus
JavaScripts Eventschleife
Mit Callbacks arbeiten
Promises verwenden, damit die eigene Gesundheit nicht leidet
async und await
Asynchrone Streams
Event-Emitter
Typsicheres Multithreading
Im Browser: Mit Web Workers
In NodeJS: Mit Kindprozessen
Zusammenfassung
Übungen
9Frontend- und Backend-Frameworks
Frontend-Frameworks
React
Angular 6/7
Typsichere APIs
Backend-Frameworks
Zusammenfassung
10Namensräume.Module
Eine kurze Geschichte der JavaScript-Module
import, export
Dynamische Importe
CommonJS und AMD Code verwenden
Modulmodus oder Skriptmodus
Namensräume
Kollisionen
Kompilierte Ausgaben
Deklarationsverschmelzung (declaration merging)
Zusammenfassung
Übung
11Zusammenarbeit mit JavaScript
Typdeklarationen
Ambiente Variablendeklarationen
Ambiente Typdeklarationen
Ambiente Moduldeklarationen
Schrittweise Migration von JavaScript zu TypeScript
Schritt 1: TSC hinzufügen
Schritt 2a: Typechecking für JavaScript aktivieren (optional)
Schritt 2b: Add JSDoc Annotations (Optional)
Schritt 3: Versehen Sie Ihre Dateien mit der Endung .ts
Schritt 4: Verwenden Sie den strict-Modus
Typermittlung für JavaScript
JavaScript von Drittanbietern verwenden
JavaScript mit eigenen Typdeklarationen
JavaScript, für das es Typdeklarationen auf DefinitelyTyped gibt
JavaScript, für das es keine Typdeklarationen auf DefinitelyTyped gibt
Zusammenfassung
12TypeScript-Projekte erstellen und ausführen
Das TypeScript-Projekt erstellen
Projekt-Layout
Artefakte
Das Kompilierungsziel festlegen
Sourcemaps verwenden
Projektreferenzen
Fehlerberichte
TypeScript auf dem Server ausführen
TypeScript im Browser ausführen
TypeScript-Code über NPM veröffentlichen
Triple-Slash-Direktiven (///)
Die types-Direktive
Die amd-module-Direktive
Zusammenfassung
13Abschluss
ATypoperatoren
BHilfsfunktionen für Typen
CGeltungsbereiche für Deklarationen
DRezepte für das Schreiben von Deklarationsdateien für JavaScript-Module von Drittanbietern
ETriple-Slash-Direktiven
FTSC-Compiler-Flags für mehr Sicherheit
GTSX
Index