Primitive Types ·
Interfaces ·
Type Aliases ·
Functions ·
Classes ·
Generics
TypeScript erweitert JavaScript um statische Typen. Diese Konzepte sind essenziell für die Entwicklung skalierbarer, wartbarer und fehlerresistenter Anwendungen.
Primitive Types sind die grundlegenden Datentypen in TypeScript. Sie helfen, Fehler frühzeitig zu erkennen und den Code besser zu dokumentieren.
| Typ | Beschreibung | Beispiel |
|---|---|---|
| string | Text (UTF-16) | "Hallo Welt" |
| number | Zahlen (Ganzzahlen & Fließkommazahlen) | 42, 3.14, -5 |
| boolean | Wahrheitswerte | true, false |
| null | Absichtlich kein Wert | null |
| undefined | Nicht definierter Wert | undefined |
| any | Beliebiger Typ (deaktiviert Typ-Prüfung) | "text", 123, true |
| unknown | Beliebiger Typ (sicherer als any) | "text", 123, true |
| void | Kein Rückgabewert | function() {} |
unknown statt any, wenn der Typ nicht bekannt ist – unknown erfordert eine Typ-Prüfung vor der Verwendung.
Interfaces definieren die Struktur von Objekten. Sie beschreiben, welche Eigenschaften und Methoden ein Objekt haben muss – zur Kompilierzeit, nicht zur Laufzeit.
readonly für unveränderliche Eigenschaften.
Type Aliases erlauben die Benennung von beliebigen Typen – primitiven Typen, Unions, Intersections und komplexen Strukturen. Sie sind flexibler als Interfaces für manche Anwendungsfälle.
type für Union Types, Intersection Types und komplexe Typen. Verwenden Sie interface für Objektstrukturen, die erweitert werden sollen.
Typisierte Funktionen definieren, welche Typen Parameter haben und welchen Rückgabetyp die Funktion liefert. Das verbessert die Code-Qualität und Dokumentation.
Classes in TypeScript erweitern JavaScript-Klassen um Typannotationen, Sichtbarkeitsmodifikatoren (public, private, protected) und die Implementierung von Interfaces.
private für Attribute, die nicht von außen geändert werden sollen, und protected für Vererbung. public ist der Standard.
Generics ermöglichen die Erstellung von wiederverwendbaren Komponenten, die mit verschiedenen Typen arbeiten können. Sie bieten Typsicherheit bei maximaler Flexibilität.
string
interface
type
() => {}
class
<T>
function identity<T>(value: T): T { return value; } ·
interface User { id: number; name: string; }