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