0Pricing
TypeScript Academy · Lektion

Warum es satisfies gibt

Erfahren Sie, welche Lücke satisfies zwischen Annotation und Inferenz schließt.

Warum es satisfies gibt ist eine kostenlose TypeScript Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des TypeScript Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der TypeScript Academy-Kurs umfasst insgesamt 4 Lektionen.

Zwei miteinander konkurrierende Ziele

Wenn Sie eine Konfiguration deklarieren, möchten Sie normalerweise zwei Dinge: eine Validierung anhand einer bekannten Struktur und eine präzise Typinferenz der Literalwerte. Diese Ziele stehen oft im Konflikt.

type Color = "red" | "green" | "blue";
// We want both: check the values AND remember exactly which ones.

Annotation verliert die Literalverengung

Das Hinzufügen einer Typannotation validiert das Objekt, verbreitert jedoch die Werte. Der Compiler vergisst die exakten Literale, die Sie geschrieben haben.

type Config = { color: string; retries: number };
const cfg: Config = { color: "red", retries: 3 };
// cfg.color is string, not "red" anymore.
console.log(cfg.color.toUpperCase());

Warum die Verbreiterung problematisch ist

Wenn color zu string verbreitert wird, können Sie es nicht mehr an Stellen verwenden, die das spezifische Literal benötigen, etwa als Index für einen anderen Typ.

const cfg = { color: "red" } as { color: string };
// const exact: "red" = cfg.color; // Error: string not assignable to "red"
console.log(cfg.color);

Ohne Annotation fehlt die Validierung

Wenn Sie die Annotation weglassen, bleibt die präzise Typinferenz erhalten, aber das Sicherheitsnetz fällt weg. Tippfehler und falsche Strukturen bleiben unbemerkt.

const cfg = { color: "rad", retries: 3 };
// No error on the typo "rad" because nothing validates it.
console.log(cfg.color);

Die Validierungslücke

Ohne Prüfung fließt ein ungültiger Wert wie eine falsch geschriebene Farbe unbemerkt durch Ihr Programm und kann weit entfernt von der Fehlerstelle zu Problemen führen.

const palette = { primary: "blu" }; // typo, no error
console.log(palette.primary); // "blu"

Der satisfies-Operator

Der satisfies-Operator validiert einen Ausdruck anhand eines Typs und bewahrt dabei den präzise inferierten Typ. Das Beste aus beiden Welten.

type Config = { color: string; retries: number };
const cfg = { color: "red", retries: 3 } satisfies Config;
console.log(cfg.color); // type is "red", value validated

satisfies bewahrt Literale

Nach satisfies ist cfg.color weiterhin das Literal "red" und nicht der breite Typ string. Die Typinferenz bleibt erhalten.

type Config = { color: string };
const cfg = { color: "red" } satisfies Config;
const exact: "red" = cfg.color; // OK
console.log(exact);

satisfies validiert weiterhin

Wenn das Objekt nicht zum Typ passt, meldet satisfies einen Fehler, genau wie eine Annotation.

type Config = { retries: number };
// const bad = { retries: "three" } satisfies Config; // Error
const good = { retries: 3 } satisfies Config;
console.log(good.retries);

Das motivierende Beispiel

Betrachten Sie eine Routentabelle, deren Schlüssel bekannte Routen und deren Werte Handlernamen sein müssen. Wir möchten eine Autovervollständigung für die Schlüssel UND validierte Werte. Genau das liefert satisfies.

type Routes = Record<string, { method: "GET" | "POST" }>;
const routes = {
  home: { method: "GET" },
  submit: { method: "POST" }
} satisfies Routes;
console.log(routes.home.method); // "GET" literal

Die drei Ansätze im Vergleich

Annotation: validiert und verbreitert. Keine Annotation: präzise, aber nicht validiert. satisfies: validiert und bleibt präzise. Für Konfigurationen gewinnt der dritte Ansatz.

type C = { color: string };
const a: C = { color: "red" };          // widened
const b = { color: "red" };             // unvalidated
const c = { color: "red" } satisfies C; // validated + precise
console.log(a.color, b.color, c.color);

Wann Sie satisfies verwenden sollten

Verwenden Sie satisfies, wenn Sie einen konstanten Wert definieren, der einem Typ entsprechen muss, Sie später aber auch auf seine exakten Inhalte zugreifen möchten.

type Sizes = Record<string, number>;
const sizes = { sm: 8, md: 16, lg: 24 } satisfies Sizes;
// keys "sm" | "md" | "lg" stay known for autocomplete
console.log(sizes.md);

Kurzer Check: Warum satisfies

Testen Sie Ihr Verständnis dafür, warum es satisfies gibt.

Zusammenfassung: Warum es satisfies gibt

Sie haben gelernt, dass Annotationen validieren, aber Werte verbreitern, dass eine fehlende Annotation die Präzision bewahrt, jedoch nicht validiert, und dass satisfies Validierung mit präziser Typinferenz verbindet – ideal für Konfigurationsobjekte.

type C = { color: string };
const c = { color: "blue" } satisfies C;
const exact: "blue" = c.color;
console.log(exact);

Häufig gestellte Fragen

Ist die Lektion „Warum es satisfies gibt“ kostenlos?

Ja — der vollständige Text von „Warum es satisfies gibt“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des TypeScript Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der TypeScript Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Warum es satisfies gibt“?

Erfahren Sie, welche Lücke satisfies zwischen Annotation und Inferenz schließt. Du übst TypeScript Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um TypeScript Academy zu starten?

Keine Vorkenntnisse erforderlich. TypeScript Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.

Wie lange dauert die Lektion „Warum es satisfies gibt“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser TypeScript Academy-Lektion Code schreiben und ausführen?

Ja. Jede TypeScript Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Warum es satisfies gibt
  2. satisfies und Typannotation
  3. satisfies und as-Assertion
  4. Praktische satisfies-Muster
← Zurück zu TypeScript Academy