Option- und Maybe-Typen
Modellieren Sie das Vorhandensein oder Fehlen eines Werts explizit.
Option- und Maybe-Typen 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.
Fehlen modellieren
Manchmal kann ein Wert einfach fehlen, ohne dass ein Fehler zu melden ist. Ein Option (auch Maybe genannt) bildet das Vorhandensein oder Fehlen explizit ab und ist eine Alternative zu null und undefined.
Option definieren
Option ist eine diskriminierte Union mit dem Tag some. Wenn some wahr ist, gibt es einen Wert; wenn es falsch ist, gibt es keinen.
type Option<T> =
| { some: true; value: T }
| { some: false };Konstruktoren
Die Hilfsfunktionen some und none erleichtern das Erstellen von Option-Werten und spiegeln dabei ok/err aus Result wider.
const some = <T>(value: T): Option<T> => ({ some: true, value });
const none: Option<never> = { some: false };Eine Option zurückgeben
Eine Suche, bei der nichts gefunden werden kann, gibt statt T | undefined eine Option zurück. Die Möglichkeit des Fehlens ist damit im Typ explizit ausgedrückt.
function find<T>(arr: T[], pred: (x: T) => boolean): Option<T> {
const hit = arr.find(pred);
return hit === undefined ? none : some(hit);
}Typeneingrenzung anhand von some
Prüfen Sie opt.some, um sicher auf den Wert zuzugreifen. Der Compiler erlaubt das Lesen von value nur innerhalb des Zweigs, in dem der Wert vorhanden ist.
const r = find([1, 2, 3], n => n > 1);
if (r.some) console.log(r.value); // 2
else console.log("not found");Warum nicht einfach null?
null und undefined werden leicht übersehen und vermischen sich mit anderen Typen. Eine explizite Option erzwingt die Behandlung des Falls, in dem kein Wert vorhanden ist, und macht die Absicht deutlich.
Option im Vergleich zu T | undefined
Beide können das Fehlen eines Werts modellieren, aber Option ist eine bewusst gewählte, benannte Struktur, an die Sie Hilfsfunktionen wie map und getOrElse anhängen können. Das fördert eine einheitliche Behandlung in der gesamten Codebasis.
// undefined is implicit and easy to ignore;
// Option is explicit and self-documenting.Eine getOrElse-Hilfsfunktion
Um eine Option in einen konkreten Wert umzuwandeln, geben Sie für den Fall des Fehlens einen Ersatzwert an. So bleibt die Behandlung des Fehlens an einer einzigen, offensichtlichen Stelle.
function getOrElse<T>(o: Option<T>, fallback: T): T {
return o.some ? o.value : fallback;
}
console.log(getOrElse(none, 0)); // 0Eine Option abbilden
Ein map transformiert den inneren Wert nur, wenn er vorhanden ist, und lässt das Fehlen unverändert. So können Sie Transformationen verketten, ohne wiederholte Prüfungen vorzunehmen.
function mapOpt<T, U>(o: Option<T>, f: (t: T) => U): Option<U> {
return o.some ? some(f(o.value)) : none;
}
console.log(mapOpt(some(5), n => n * 2)); // { some: true, value: 10 }Option im Vergleich zu Result
Verwenden Sie Option, wenn das Fehlen keinen Grund hat (etwa bei einer erfolglosen Suche). Verwenden Sie Result, wenn der Fehler durch eine erklärende Fehlermeldung beschrieben wird. Entscheiden Sie danach, ob Sie das Warum mitteilen müssen.
Optionen verketten
Da Option über map und getOrElse verfügt, bleiben Ketten optionaler Schritte gut lesbar. Das Fehlen eines Werts beendet die Kette dabei automatisch vorzeitig.
const out = getOrElse(mapOpt(find([1,2], n => n > 1), n => n + 100), -1);
console.log(out); // 102Kurzer Check
Kurzer Check zu dieser Lektion.
Rückblick
Option<T> ist entweder { some: true; value } oder { some: false } und bildet das Fehlen explizit statt mit null ab. Erstellen Sie Optionen mit some/none, grenzen Sie den Typ anhand von some ein und verwenden Sie Hilfsfunktionen wie getOrElse und map. Bevorzugen Sie Option, wenn das Fehlen keinen Grund benötigt, und Result, wenn der Fehler einen Grund hat.
Häufig gestellte Fragen
Ist die Lektion „Option- und Maybe-Typen“ kostenlos?
Ja — der vollständige Text von „Option- und Maybe-Typen“ 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 „Option- und Maybe-Typen“?
Modellieren Sie das Vorhandensein oder Fehlen eines Werts explizit. 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 „Option- und Maybe-Typen“?
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
- Das Problem mit dem Auslösen von Fehlern
- Result-Typen modellieren
- Option- und Maybe-Typen
- Railway-Oriented Programming