satisfies und as-Assertion
Erfahren Sie, warum satisfies sicherer ist als eine Typumwandlung mit as.
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); // undefinedsatisfies 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);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
- Warum es satisfies gibt
- satisfies und Typannotation
- satisfies und as-Assertion
- Praktische satisfies-Muster