TypeScript Academy · Lektion

satisfies und as-Assertion

Erfahren Sie, warum satisfies sicherer ist als eine Typumwandlung mit as.

Lektion 3 von 413 Schritte

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

Was as bewirkt

Die as-Assertion weist den Compiler an, Ihnen hinsichtlich eines Typs zu vertrauen. Sie prüft nicht, ob der Wert tatsächlich passt, sondern überschreibt lediglich den inferierten Typ.

const value = { color: "red" } as { color: string; size: number };
// No error even though size is missing!
console.log(value.color);

as umgeht die Sicherheit

Da as die Validierung überspringt, kann es echte Fehler verbergen. Dem obigen Objekt fehlt size, trotzdem bleibt TypeScript still.

type Config = { color: string; size: number };
const broken = { color: "red" } as Config;
// broken.size is typed number but is actually undefined at runtime
console.log(broken.size); // undefined

satisfies validiert stattdessen

Wenn Sie as durch satisfies ersetzen, wird aus diesem stillen Fehler ein klarer Kompilierfehler, weil das Objekt tatsächlich zum Typ passen muss.

type Config = { color: string; size: number };
// const c = { color: "red" } satisfies Config; // Error: size missing
const c = { color: "red", size: 10 } satisfies Config;
console.log(c.size);

as kann falsche Typen erzwingen

Mit einer doppelten Assertion können Sie sogar völlig inkompatible Typen behaupten. Das ist gefährlich und sollte selten vorkommen.

const n = "hello" as unknown as number;
// n is typed number but is actually a string
console.log(typeof n); // "string"

satisfies macht keine falschen Angaben über Werte

Im Gegensatz zu as kann satisfies nicht verwendet werden, um einen inkompatiblen Typ zu behaupten. Es bestätigt lediglich, dass der Wert bereits passt.

// const x = "hello" satisfies number; // Error: string not assignable to number
const y = 42 satisfies number;
console.log(y);

as verliert die Prüfung zusätzlicher Eigenschaften

Mit as gelangen zusätzliche oder falsch geschriebene Schlüssel unbemerkt durch. satisfies weist weiterhin auf sie hin und erkennt dadurch Tippfehler.

type Config = { mode: string };
const withAs = { mdoe: "dark" } as Config;   // typo passes silently
// const withSat = { mdoe: "dark" } satisfies Config; // Error: mdoe
console.log(JSON.stringify(withAs));

Wann as sinnvoll erforderlich ist

as hat berechtigte Einsatzmöglichkeiten, etwa beim Eingrenzen von unknown nach einer Laufzeitprüfung oder bei der Arbeit mit dem DOM. Für Konfigurationsobjekte sollten Sie jedoch satisfies bevorzugen.

const data: unknown = JSON.parse("{ }");
// After your own runtime validation, as can express the result.
const obj = data as Record<string, unknown>;
console.log(typeof obj);

satisfies für Konfigurationen bevorzugen

Für Konfigurationen, Routentabellen und Farbpaletten bietet satisfies Validierung plus präzise Typinferenz. as bietet weder Validierung noch eine Garantie.

type Palette = Record<string, string>;
const safe = { primary: "blue", accent: "gold" } satisfies Palette;
console.log(safe.primary);

as const ist etwas anderes

Verwechseln Sie as const nicht mit einer Typassertion. as const grenzt auf Literale ein und macht Werte schreibgeschützt. Es ist sicher und wird häufig mit satisfies kombiniert.

type Nums = readonly number[];
const xs = [1, 2, 3] as const satisfies Nums;
console.log(xs[0]);

Zusammenfassung der Risiken

as: überschreibt den Compiler, prüft nicht und kann Fehler verbergen. satisfies: arbeitet mit dem Compiler zusammen, prüft vollständig und bewahrt die Typinferenz. Wählen Sie standardmäßig satisfies.

type Config = { level: number };
// const risky = {} as Config; // compiles, level is undefined
const safe = { level: 1 } satisfies Config;
console.log(safe.level);

as zu satisfies umgestalten

Eine gute Gewohnheit: Wenn Sie bei einem von Ihnen kontrollierten Literal as SomeObjectType sehen, versuchen Sie, es durch satisfies zu ersetzen, und beheben Sie anschließend alle auftretenden Fehler.

type Config = { url: string; retries: number };
// Before: const c = { url: "/api" } as Config;
const c = { url: "/api", retries: 3 } satisfies Config;
console.log(c.url, c.retries);

Kurzer Check: satisfies vs. as

Testen Sie Ihr Verständnis des Unterschieds zwischen satisfies und as.

Zusammenfassung: satisfies vs. as-Assertion

Sie haben gelernt, dass as Prüfungen umgeht und Fehler verbergen kann, während satisfies den Wert validiert und die präzise Typinferenz bewahrt. Bevorzugen Sie satisfies für Konfigurationsobjekte, die Sie kontrollieren.

type Config = { color: string; size: number };
const c = { color: "red", size: 10 } satisfies Config;
console.log(c.color, c.size);
Kostenlos starten

Lerne TypeScript mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
101
Lektionen
352

Häufig gestellte Fragen

Ist die Lektion „satisfies und as-Assertion“ kostenlos?

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

Erfahren Sie, warum satisfies sicherer ist als eine Typumwandlung mit as. 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 3 von 4.

Wie lange dauert die Lektion „satisfies und as-Assertion“?

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