0Pricing
TypeScript Academy · Lektion

infer in bedingten Typen verstehen

Extrahieren Sie innere Typen mit infer in extends-Klauseln.

infer in bedingten Typen verstehen 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.

Was ist infer?

Das Schlüsselwort infer wird innerhalb bedingter Typen verwendet. Es ermöglicht TypeScript, eine Typvariable aus der passenden Position zu erfassen, sodass Sie sie im True-Zweig verwenden können.

type GetReturn<T> = T extends (...args: any[]) => infer R ? R : never;

Grundlegendes infer-Beispiel

Hier extrahieren wir mithilfe von infer R den Rückgabetyp einer beliebigen Funktion.

type ReturnType<T> = T extends (...args: any[]) => infer R ? R : never;
type A = ReturnType<() => string>;  // string
type B = ReturnType<() => number[]>; // number[]

So funktioniert infer

TypeScript vergleicht die Struktur von T mit dem Muster. Bei einer Übereinstimmung enthält die inferierte Variable den passenden Teil. Andernfalls wird der False-Zweig ausgeführt.

type First<T> = T extends [infer F, ...any[]] ? F : never;
type X = First<[string, number, boolean]>; // string

Inferieren aus generischen Parametern

Sie können das Typargument eines generischen Typs inferieren, beispielsweise indem Sie T aus Promise extrahieren.

type Unwrap<T> = T extends Promise<infer U> ? U : T;
type A = Unwrap<Promise<string>>; // string
type B = Unwrap<number>;          // number

Mehrere infer-Variablen

Sie können mehrere infer-Klauseln in einem einzigen bedingten Typ verwenden, um mehrere Positionen gleichzeitig zu erfassen.

type Head<T> = T extends [infer H, ...infer Tail] ? H : never;
type Tail<T> = T extends [infer H, ...infer Tail] ? Tail : never;

infer in Funktionsparametern

Infer kann auch die Typen von Funktionsparametern erfassen, nicht nur Rückgabetypen.

type FirstParam<T> = T extends (first: infer P, ...rest: any[]) => any ? P : never;
type A = FirstParam<(x: string, y: number) => void>; // string

Distributives Verhalten mit infer

Wenn T eine Union ist, werden bedingte Typen (einschließlich solcher mit infer) auf jedes Union-Mitglied verteilt.

type UnwrapAll<T> = T extends Promise<infer U> ? U : T;
type X = UnwrapAll<Promise<string> | Promise<number>>;
// string | number

Verschachteltes infer

Sie können infer verschachteln, um tiefer in eine Typstruktur vorzudringen, beispielsweise um den Werttyp eines Arrays innerhalb eines Promise zu extrahieren.

type UnwrapPromiseArray<T> =
  T extends Promise<infer U>
    ? U extends (infer V)[]
      ? V
      : U
    : T;

infer mit String-Mustern

Durch die Kombination von Template-Literal-Typen mit infer können Sie Teilstrings aus String-Literaltypen extrahieren.

type GetDomain<T extends string> =
  T extends `https://${infer Domain}` ? Domain : never;
type D = GetDomain<"https://example.com">; // "example.com"

Häufige Fehler

Infer funktioniert nur innerhalb der extends-Klausel eines bedingten Typs. Eine Verwendung an anderer Stelle führt zu einem Kompilierungsfehler. Außerdem ist infer im False-Zweig nicht verfügbar.

// Error: infer can only appear in extends clauses
type Bad<T> = infer R; // SyntaxError

Zusammenfassung: infer

Mit dem Schlüsselwort infer kann TypeScript bei einer strukturellen Übereinstimmung innerhalb eines bedingten Typs einen Typausschnitt erfassen. Es bildet die Grundlage für Utility-Typen wie ReturnType, Parameters und Awaited.

Kurzer Test

Wo kann das Schlüsselwort infer verwendet werden?

Das haben Sie gelernt

Das Schlüsselwort infer ermöglicht den Mustervergleich auf Typebene, indem es Typausschnitte aus strukturellen Mustern extrahiert. Es ist die Grundlage leistungsstarker Utility-Typen und typsicherer Metaprogrammierung in TypeScript.

Häufig gestellte Fragen

Ist die Lektion „infer in bedingten Typen verstehen“ kostenlos?

Ja — der vollständige Text von „infer in bedingten Typen verstehen“ 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 „infer in bedingten Typen verstehen“?

Extrahieren Sie innere Typen mit infer in extends-Klauseln. 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 „infer in bedingten Typen verstehen“?

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. infer in bedingten Typen verstehen
  2. ReturnType und Parameters von Grund auf erstellen
  3. Verschachtelte Inferenzmuster
  4. Praxisnahe infer-Anwendungsfälle: Promises entpacken
← Zurück zu TypeScript Academy