in, instanceof und diskriminierte Unions
Verwenden Sie in-/Eigenschaftsprüfungen, instanceof für Klassen und diskriminierte Unions, um sicher zu verzweigen.
in, instanceof und diskriminierte Unions 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: Üben Sie drei leistungsfähige Guards: in für Eigenschaftsprüfungen, instanceof für Klassen und discriminated unions für übersichtliche Verzweigungen.
in-Operator
in grenzt Typen ein, indem zur Laufzeit auf einen Eigenschaftsnamen geprüft wird. Das eignet sich besonders für Unions aus Objekt-Literalen.
type HasLength = { length: number };
function print(v: string | HasLength) {
if ("length" in v) {
// v is HasLength
console.log("len:", v.length);
} else {
// v is string
console.log(v.toUpperCase());
}
}
print({ length: 3 });
print("ts");instanceof
instanceof prüft bei klassenbasierten Werten die Prototypen. Es funktioniert, wenn der Konstruktor zur Laufzeit verfügbar ist.
class Person {
constructor(public name: string) {}
}
function hello(x: Person | Date) {
if (x instanceof Person) {
console.log("Hi", x.name);
} else {
console.log("Year", x.getFullYear());
}
}
hello(new Person("Ada"));
hello(new Date(2024, 0, 1));Discriminated Union
Discriminated Unions verwenden ein Literal-Tag (etwa kind), um mit vollständigem Narrowing pro Fall übersichtlich zu verzweigen.
type Circle = { kind: "circle"; radius: number };
type Square = { kind: "square"; size: number };
type Shape = Circle | Square;
function area(s: Shape): number {
switch (s.kind) {
case "circle":
return Math.PI * s.radius ** 2;
case "square":
return s.size * s.size;
}
}
console.log(area({ kind: "circle", radius: 2 }));
console.log(area({ kind: "square", size: 3 }));Guards kombinieren
Kombinieren Sie Tag-Prüfungen mit in, um verschachtelte Strukturen einzugrenzen und nur auf sichere Member zuzugreifen.
type FetchOk = { status: "ok"; data: { length: number } };
type FetchErr = { status: "error"; message: string };
type Result = FetchOk | FetchErr;
function handle(r: Result) {
if (r.status === "ok" && "length" in r.data) {
console.log("items:", r.data.length);
} else {
console.log("error:", r.message);
}
}
handle({ status: "ok", data: { length: 5 } });
handle({ status: "error", message: "oops" });Richtlinien
Richtlinien:
- Verwenden Sie in für eigenschaftsbasierte Unions.
- Verwenden Sie instanceof mit Klassen.
- Verwenden Sie discriminated unions für einen übersichtlichen Kontrollfluss.
Überprüfung des in-Operators
Kurze Überprüfung: Welcher Operator prüft eine Eigenschaft zur Laufzeit und grenzt Typen ein?
Zusammenfassung
Zusammenfassung: in prüft Eigenschaften, instanceof prüft Klassen und discriminated unions ermöglichen übersichtliche, typsichere Verzweigungen.
Häufig gestellte Fragen
Ist die Lektion „in, instanceof und diskriminierte Unions“ kostenlos?
Ja — der vollständige Text von „in, instanceof und diskriminierte Unions“ 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 „in, instanceof und diskriminierte Unions“?
Verwenden Sie in-/Eigenschaftsprüfungen, instanceof für Klassen und diskriminierte Unions, um sicher zu verzweigen. 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 „in, instanceof und diskriminierte Unions“?
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
- typeof-, Gleichheits- und Truthiness-Narrowing
- in, instanceof und diskriminierte Unions
- Vollständigkeitsprüfung mit never (Einführung)