0Pricing
TypeScript Academy · Lektion

Predicate-Funktionen und satisfies-Operator

Schreiben Sie eigene Type Guards mit Predicate-Rückgabetypen und validieren Sie Objekte mit dem satisfies-Operator, ohne sie zu verbreitern.

Predicate-Funktionen und satisfies-Operator ist eine kostenlose TypeScript Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 3. 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 3 Lektionen.

Einführung

Ziel: Erstellen Sie Prädikatsfunktionen, die Typen eingrenzen (z. B. value is T), und verwenden Sie satisfies, um Formen ohne Verbreiterung zu prüfen.

  • Benutzerdefinierte Guards = wiederverwendbare Prüfungen zur Laufzeit
  • satisfies = Formprüfung zur Compile-Zeit, bewahrt Literale

Grundlagen von Prädikaten

Eine Prädikatsfunktion gibt x is Type zurück. Nach der Prüfung ist die Variable in diesem Gültigkeitsbereich eingegrenzt.

function isNumber(x: unknown): x is number {
  return typeof x === "number"
}

function demo(a: unknown) {
  if (isNumber(a)) {
    // inside: a is number
    return a.toFixed(2)
  }
  return "not a number"
}

Formprüfung

Ein Guard prüft die Form der Objekte. Wenn die Prüfung erfolgreich ist, wird das Objekt als User eingegrenzt und kann sicher verwendet werden.

type User = { id: number; name: string }

function isUser(v: unknown): v is User {
  return typeof v === "object" && v !== null &&
    "id" in v && "name" in v &&
    typeof (v as any).id === "number" &&
    typeof (v as any).name === "string"
}

function printUser(u: unknown) {
  if (isUser(u)) {
    console.log(u.name.toUpperCase())
  } else {
    console.log("invalid user")
  }
}

Über Grenzen hinweg

Guards sorgen für einen sicheren Transport über Funktionsgrenzen hinweg: außen unknown, innen ein kontrollierter User.

function fetchAndPrint(json: string) {
  const value: unknown = JSON.parse(json)
  if (isUser(value)) {
    // value narrowed to User
    console.log(`User #${value.id}: ${value.name}`)
  } else {
    console.log("Bad payload")
  }
}

satisfies (Konfiguration)

satisfies prüft, ob der Ausdruck mit Confige übereinstimmt, bewahrt aber den Literaltyp der Variable.

type Config = { mode: "dev" | "prod"; retries: number }

const cfg = {
  mode: "prod",
  retries: 3,
  // timeout: 1000, // Error with satisfies if not in type
} satisfies Config

// cfg.mode is still the literal "prod" (not widened to string)
// and adding unknown keys raises an error at compile-time

satisfies (Arrays)

In Arrays werden Elementformen mit as const satisfies validiert; Literalwerte bleiben erhalten und die Autovervollständigung wird verbessert.

type Route = { path: `/${string}`; method: "GET" | "POST" }

const routes = [
  { path: "/", method: "GET" },
  { path: "/login", method: "POST" }
] as const satisfies ReadonlyArray<Route>

// each element is checked against Route, literals preserved for DX

satisfies prüfen

Kurztest: Was macht satisfies tatsächlich?

Zusammenfassung

Zusammenfassung: Prädikate (x is T) bilden Verträge; satisfies bestätigt die Form und bewahrt Literaltypen. Verwenden Sie beides zusammen.

Häufig gestellte Fragen

Ist die Lektion „Predicate-Funktionen und satisfies-Operator“ kostenlos?

Ja — der vollständige Text von „Predicate-Funktionen und satisfies-Operator“ 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 3 Lektionen.

Was lerne ich in „Predicate-Funktionen und satisfies-Operator“?

Schreiben Sie eigene Type Guards mit Predicate-Rückgabetypen und validieren Sie Objekte mit dem satisfies-Operator, ohne sie zu verbreitern. 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 3.

Wie lange dauert die Lektion „Predicate-Funktionen und satisfies-Operator“?

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. Vollständige Switch-Anweisungen und never-Prüfungen
  2. Predicate-Funktionen und satisfies-Operator
  3. Unions über Funktionsgrenzen hinweg verfeinern
← Zurück zu TypeScript Academy