Menu
Coddy logo textTech

TypeScript Cheat Sheet

Zuletzt aktualisiert

Basistypen

Die primitiven Typen und wie du Variablen annotierst.

OperationSyntax
Stringlet name: string = "Ada";
Zahllet age: number = 25;
Booleanlet ok: boolean = true;
Array von Tlet xs: number[] = [1, 2, 3];
Generisches Arraylet xs: Array<string> = [];
Tuplelet pair: [string, number] = ["a", 1];
Any (keine Typprüfung)let x: any = 1;
Unknown (sicheres any)let x: unknown = JSON.parse(s);
Void (kein Rückgabewert)function log(): void { … }
Never (kehrt nie zurück)function fail(): never { throw … }
Null / undefinedlet n: null = null;

Typinferenz und Annotationen

Wann TS Typen ableitet und wann du annotierst.

OperationSyntax
Aus dem Wert abgeleitetlet count = 0; // number
Explizite Annotationlet count: number = 0;
Funktionsparameterfunction add(a: number, b: number) { … }
Rückgabetypfunction add(a: number, b: number): number { … }
Arrow-Funktionconst sq = (x: number): number => x * x;
Type Assertionconst el = input as HTMLInputElement;
Const Assertion (Literal)const dirs = ["up", "down"] as const;
Non-null Assertionel!.focus();

Interfaces

Beschreibe die Form eines Objekts.

OperationSyntax
Deklariereninterface User { id: number; name: string; }
Optionale Propertyinterface User { age?: number; }
Readonly Propertyinterface User { readonly id: number; }
Methodensignaturinterface Logger { log(msg: string): void; }
Anderes Interface erweiterninterface Admin extends User { role: string; }
Index-Signaturinterface Map { [key: string]: number; }
In einer Klasse implementierenclass Db implements Logger { … }

Type Aliases und Unions

Benenne einen Typ und kombiniere Typen mit | und &.

OperationSyntax
Type Aliastype ID = string | number;
Objekt-Aliastype User = { id: number; name: string };
Union-Typtype Status = "idle" | "loading" | "done";
Intersection-Typtype Admin = User & { role: string };
Literal-Typtype Yes = "yes";
Nullabletype Maybe<T> = T | null | undefined;
Funktions-Aliastype Handler = (e: Event) => void;

Funktionen

Typisierte Parameter, Rückgaben und Überladungen.

OperationSyntax
Optionaler Parameterfunction greet(name?: string) { … }
Default-Parameterfunction greet(name = "friend") { … }
Rest-Parameterfunction sum(...ns: number[]): number { … }
Funktionstyplet fn: (a: number) => number;
Aufrufbares Interfaceinterface Fn { (x: number): number; }
Überladungs-Signaturenfunction f(x: string): string; function f(x: number): number; function f(x: any) { return x; }
Void-Rückgabe ignoriertconst cb: () => void = () => 42; // ok

Klassen

Klassen mit Zugriffsmodifizierern und Parameter-Properties.

OperationSyntax
Klasse deklarierenclass User { name: string; }
Konstruktorconstructor(name: string) { this.name = name; }
Parameter-Propertyconstructor(public name: string) {}
Public / private / protectedprivate id: number;
Readonly-Feldreadonly id: number;
Statisches Memberstatic count = 0;
Getter / Setterget name() { return this._name; }
Vererbungclass Admin extends User { … }
Abstrakte Klasseabstract class Shape { abstract area(): number; }

Generics

Wiederverwendbare Typen, parametrisiert mit anderen Typen.

OperationSyntax
Generische Funktionfunction id<T>(x: T): T { return x; }
Mit explizitem Typ aufrufenid<string>("hi");
Generisches Interfaceinterface Box<T> { value: T; }
Generischer Aliastype Pair<A, B> = [A, B];
Generische Klasseclass Stack<T> { items: T[] = []; }
Constraint mit extendsfunction len<T extends { length: number }>(x: T) { return x.length; }
Default-Typparameterinterface Box<T = string> { value: T; }
keyof-Operatortype K = keyof User; // "id" | "name"
Index-Zugriffstyptype Name = User["name"];

Narrowing

Eine Union zur Laufzeit auf einen einzelnen Typ einengen.

OperationSyntax
typeof-Prüfungif (typeof x === "string") { … }
instanceof-Prüfungif (e instanceof Error) { … }
in-Operatorif ("name" in obj) { … }
Narrowing durch Gleichheitif (status === "done") { … }
Wahrheitswert-Prüfungif (value) { … }
Eigener Type Guardfunction isUser(x: any): x is User { return "id" in x; }
Discriminated Uniontype Shape = { kind: "sq"; size: number } | { kind: "ci"; r: number };
Vollständigkeit mit neverconst _: never = shape;

Enums

Benannte Mengen von Konstanten.

OperationSyntax
Numerisches Enumenum Direction { Up, Down, Left, Right }
String-Enumenum Status { Idle = "IDLE", Done = "DONE" }
Einen Wert verwendenlet d: Direction = Direction.Up;
Const Enum (inline)const enum Color { Red, Green, Blue }
Literal-Union (modern)type Status = "idle" | "done";

Utility Types

Eingebaute Helper, die bestehende Typen umformen.

OperationSyntax
Alle Props optionalPartial<User>
Alle Props erforderlichRequired<User>
Alle Props readonlyReadonly<User>
Teilmenge an Keys auswählenPick<User, "id" | "name">
Einen oder mehrere Keys weglassenOmit<User, "password">
Objekt mit gegebenen KeysRecord<string, number>
Aus einer Union ausschließenExclude<"a" | "b" | "c", "a">
Nur aus einer Union behaltenExtract<"a" | "b", "a" | "c">
null / undefined entfernenNonNullable<string | null>
Funktions-RückgabetypReturnType<typeof fn>
Parameter-TupleParameters<typeof fn>
Awaited Promise-TypAwaited<Promise<string>>

Module

Import und Export zwischen Dateien.

OperationSyntax
Benannter Exportexport function add(a: number, b: number) { … }
Default-Exportexport default class User { … }
Re-Exportexport { User } from "./user";
Benannter Importimport { add } from "./math";
Default-Importimport User from "./user";
Nur-Typ-Importimport type { User } from "./user";
Alles importierenimport * as math from "./math";
Triple-Slash-Referenz/// <reference types="node" />

tsconfig-Essenzielles

Die Compiler-Flags, die man kennen sollte.

OptionWirkung
"strict": trueAktiviert alle Strict-Mode-Prüfungen (empfohlen).
"target": "ES2022"JavaScript-Version, die tsc ausgibt.
"module": "ESNext"Modulsystem in der Ausgabe.
"moduleResolution": "bundler"Auflösung wie moderne Bundler.
"jsx": "react-jsx"JSX für React 17+ aktivieren.
"esModuleInterop": trueSauberere Default-Imports aus CommonJS.
"skipLibCheck": trueTypprüfung in node_modules überspringen (schnellerer Build).
"noEmit": trueNur Typprüfung — die Ausgabe übernimmt der Bundler.

Die TypeScript-Syntax, die du am häufigsten brauchst, auf einer Seite. Dieses TypeScript Cheat Sheet ist eine schnelle Referenz für den TS-Alltag: Basistypen, Interfaces, Type Aliases, Generics, Unions, Narrowing und die eingebauten Utility Types.

Alles hier ist Standard-TypeScript, das mit tsc kompiliert und überall dort läuft, wo modernes JavaScript läuft. Kopiere, was du brauchst, oder probiere jeden Snippet live im TypeScript-Playground aus — ohne Installation.

FAQ TypeScript Cheat Sheet

Ist dieses TypeScript Cheat Sheet kostenlos?
Ja. Dieses TypeScript Cheat Sheet ist komplett kostenlos, ohne Registrierung. Setze es als Lesezeichen und komm zurück, wenn du einen Typ, ein Interface oder einen Utility Type nachschlagen willst.
Was ist der Unterschied zwischen Interface und Type Alias?
Beide können die Form eines Objekts beschreiben und sind in den meisten Alltagsfällen austauschbar. Interfaces können dateiübergreifend wiedereröffnet und erweitert werden (Declaration Merging), was für Bibliothekstypen nützlich ist. Type Aliases können Unions, Intersections, Tuples und Mapped Types benennen — Formen, die du mit interface nicht ausdrücken kannst. Häufige Regel: interface für öffentliche Objektformen, type für Unions, Tuples und berechnete Typen.
Was ist der Unterschied zwischen any und unknown?
any schaltet die Typprüfung komplett aus — der Compiler lässt dich damit alles tun. unknown ist typsicher: du musst es einengen (mit typeof, instanceof oder einem Type Guard), bevor du es benutzen kannst. Bevorzuge unknown für Werte aus externen Quellen wie JSON.parse oder fetch — es zwingt dich zur Validierung vor der Nutzung.
Muss ich JavaScript vor TypeScript lernen?
Ja — TypeScript ist JavaScript mit einem Typsystem obendrauf, also kommt jede JS-Fähigkeit zum Tragen. Wenn du noch JS-Grundlagen (Arrays, Objekte, async/await) aufbaust, ist das JavaScript-Cheat-Sheet ein guter Startpunkt und Coddys kostenloser JavaScript-Kurs vermittelt dasselbe interaktiv.
Kann ich TypeScript online üben?
Ja. Öffne den TypeScript-Playground, um jeden Snippet aus diesem Cheat Sheet im Browser auszuführen — ohne Installation. Wenn du Struktur willst, lerne über die JavaScript-Landing und wende die Typen dieser Seite obendrauf an.
Coddy programming languages illustration

Lerne TypeScript mit Coddy

LOS GEHT'S