0Pricing
TypeScript Academy · Lektion

satisfies und Typannotation

Bewahren Sie die Literal-Inferenz und validieren Sie gleichzeitig die Struktur.

satisfies und Typannotation ist eine kostenlose TypeScript Academy-Lektion auf CoddyKit. Dies ist Lektion 2 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.

Das Annotation-Muster

Das klassische Muster const config: Type = {...} validiert das Objekt, aber der Variablentyp wird zu Type, wodurch alle darin enthaltenen Literale verbreitert werden.

type Config = { mode: string; level: number };
const config: Config = { mode: "dark", level: 5 };
// config.mode has type string
console.log(config.mode);

So sieht die Verbreiterung aus

Mit der Annotation ist config.mode vom Typ string. Sie können es keiner Variablen zuweisen, die das Literal "dark" erwartet.

type Config = { mode: string };
const config: Config = { mode: "dark" };
// const m: "dark" = config.mode; // Error: string not assignable to "dark"
console.log(config.mode);

Das satisfies-Muster

Mit const config = {...} satisfies Type behält die Variable ihren exakt inferierten Typ und wird trotzdem gegen Type geprüft.

type Config = { mode: string; level: number };
const config = { mode: "dark", level: 5 } satisfies Config;
// config.mode has type "dark"
console.log(config.mode);

Präzise Typinferenz bleibt erhalten

Nun ist config.mode das Literal "dark" und funktioniert daher überall dort, wo der engere Typ erforderlich ist.

type Config = { mode: string };
const config = { mode: "dark" } satisfies Config;
const m: "dark" = config.mode; // OK
console.log(m);

Beide Ansätze validieren weiterhin

Beide Muster weisen ungültige Objekte zurück. Der Unterschied liegt ausschließlich im resultierenden Variablentyp, nicht darin, ob eine Validierung stattfindet.

type Config = { level: number };
// const a: Config = { level: "x" }; // Error
// const b = { level: "x" } satisfies Config; // Error
const ok = { level: 3 } satisfies Config;
console.log(ok.level);

Zusätzliche Eigenschaften werden erkannt

Wie Annotationen weist auch satisfies überzählige Eigenschaften zurück, die im Zieltyp nicht vorkommen, und hilft so, Tippfehler in Schlüsseln zu erkennen.

type Config = { mode: string };
// const c = { mode: "dark", extar: true } satisfies Config; // Error: extar
const c = { mode: "dark" } satisfies Config;
console.log(c.mode);

Tupelpräzision bewahren

satisfies hilft Arrays außerdem dabei, in Kombination mit as const ihre tupelartige Präzision zu bewahren, während die Elementtypen weiterhin validiert werden.

type Nums = readonly number[];
const xs = [1, 2, 3] as const satisfies Nums;
// xs is a readonly tuple [1, 2, 3], validated as numbers
console.log(xs.length);

Annotationen verbreitern Vereinigungsmitglieder

Wenn ein Feld eine Vereinigung wie "a" | "b" ist, bewahrt eine als diese Vereinigung typisierte Annotation den Vereinigungstyp. Ein breiterer Feldtyp verbreitert ihn dagegen. satisfies legt das exakte Mitglied fest.

type Config = { tier: string };
const withAnn: Config = { tier: "pro" };       // tier: string
const withSat = { tier: "pro" } satisfies Config; // tier: "pro"
console.log(withAnn.tier, withSat.tier);

Autovervollständigung beim Lesen bewahren

Da satisfies Literal-Schlüssel und -Werte bewahrt, können Editoren anhand des exakten Objekts und nicht anhand des breiteren deklarierten Typs vervollständigen.

type Theme = Record<string, string>;
const theme = { bg: "black", fg: "white" } satisfies Theme;
// theme.<autocomplete shows bg and fg>
console.log(theme.bg, theme.fg);

Zwischen den Ansätzen wählen

Verwenden Sie eine einfache Annotation, wenn Sie tatsächlich den breiteren Typ wünschen. Verwenden Sie satisfies, wenn Sie Validierung benötigen, danach aber auch die präzise inferierte Struktur verwenden möchten.

type Config = { mode: string };
// Want wide type for reassignment flexibility -> annotation
let a: Config = { mode: "dark" };
// Want exact literals for later indexing -> satisfies
const b = { mode: "dark" } satisfies Config;
console.log(a.mode, b.mode);

Zusammenfassung im direkten Vergleich

Eine Annotation verbreitert, satisfies bewahrt. Beide validieren. Für unveränderliche Konfigurationen, aus denen Sie Werte lesen, ist satisfies normalerweise die bessere Standardeinstellung.

type C = { color: string; size: number };
const widened: C = { color: "red", size: 1 };
const exact = { color: "red", size: 1 } satisfies C;
console.log(widened.color, exact.color);

Kurzer Check: satisfies vs. Annotation

Testen Sie Ihr Verständnis des Unterschieds.

Zusammenfassung: satisfies vs. Typannotation

Eine Typannotation validiert Literale, verbreitert sie aber zu ihren Basistypen. Der satisfies-Operator validiert und bewahrt die exakte Typinferenz einschließlich Literalwerten, Schlüsseln und Tupelpräzision.

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

Häufig gestellte Fragen

Ist die Lektion „satisfies und Typannotation“ kostenlos?

Ja — der vollständige Text von „satisfies und Typannotation“ 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 „satisfies und Typannotation“?

Bewahren Sie die Literal-Inferenz und validieren Sie gleichzeitig die Struktur. 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 2 von 4.

Wie lange dauert die Lektion „satisfies und Typannotation“?

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