Option- och Maybe-typer
Modellera om ett värde finns eller saknas på ett uttryckligt sätt.
Option- och Maybe-typer är en gratis lektion i TypeScript Academy på CoddyKit. Detta är lektion 3 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för TypeScript Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i TypeScript Academy innehåller totalt 4 lektioner.
Modellera avsaknad
Ibland kan ett värde helt enkelt saknas, utan att det finns något fel att rapportera. En Option (även kallad Maybe) modellerar närvaro eller avsaknad explicit och är ett alternativ till null och undefined.
Definiera Option
Option är en diskriminerad unionstyp med taggen some. När some är true finns ett värde; när det är false finns ingenting.
type Option<T> =
| { some: true; value: T }
| { some: false };Konstruktorer
Hjälpfunktionerna some och none gör Option-värden enkla att skapa och motsvarar ok/err från Result.
const some = <T>(value: T): Option<T> => ({ some: true, value });
const none: Option<never> = { some: false };Returnera en Option
En uppslagning som kanske inte hittar något returnerar en Option i stället för T | undefined. Avsikten med att värdet är valfritt framgår då tydligt av typen.
function find<T>(arr: T[], pred: (x: T) => boolean): Option<T> {
const hit = arr.find(pred);
return hit === undefined ? none : some(hit);
}Typförfining med some
Kontrollera opt.some för att komma åt värdet på ett säkert sätt. Kompilatorn tillåter bara läsning av value i grenen där värdet finns.
const r = find([1, 2, 3], n => n > 1);
if (r.some) console.log(r.value); // 2
else console.log("not found");Varför inte bara null
null och undefined är lätta att glömma och blandas lätt ihop med andra typer. En explicit Option tvingar fram hantering av fallet där värdet saknas och visar tydligt att det är avsiktligt.
Option jämfört med T | undefined
Båda kan modellera avsaknad, men Option är en avsiktlig och namngiven struktur som du kan koppla hjälpfunktioner till (map, getOrElse). Det uppmuntrar till konsekvent hantering i hela kodbasen.
// undefined is implicit and easy to ignore;
// Option is explicit and self-documenting.En hjälpfunktion för getOrElse
Om du vill omvandla en Option till ett konkret värde anger du ett reservvärde för fallet där värdet saknas. Då samlas hanteringen av avsaknad på en tydlig plats.
function getOrElse<T>(o: Option<T>, fallback: T): T {
return o.some ? o.value : fallback;
}
console.log(getOrElse(none, 0)); // 0Mappa över en Option
map omvandlar det inre värdet endast när det finns och lämnar avsaknaden orörd. På så sätt kan du kedja omvandlingar utan upprepade kontroller.
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 jämfört med Result
Använd Option när avsaknaden inte har någon orsak (till exempel en uppslagning utan träff). Använd Result när misslyckandet har ett förklarande fel. Välj utifrån om du behöver förmedla varför.
Kombinera Options
Eftersom Option har map och getOrElse förblir kedjor av steg som kan sakna värde lättlästa, och avsaknad avbryter automatiskt resten av kedjan.
const out = getOrElse(mapOpt(find([1,2], n => n > 1), n => n + 100), -1);
console.log(out); // 102Snabb kontroll
Snabb kontroll av lektionen.
Sammanfattning
Option<T> är { some: true; value } eller { some: false } och modellerar avsaknad explicit i stället för med null. Skapa värden med some/none, förfina typen med some och använd hjälpfunktioner som getOrElse och map. Föredra Option när avsaknaden inte behöver någon orsak och Result när misslyckandet behöver det.
Lär dig TypeScript med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 101
- Lektioner
- 352
Vanliga frågor
Är lektionen ”Option- och Maybe-typer” gratis?
Ja – hela texten till ”Option- och Maybe-typer” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i TypeScript Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i TypeScript Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Option- och Maybe-typer”?
Modellera om ett värde finns eller saknas på ett uttryckligt sätt. Ni övar på TypeScript Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig TypeScript Academy?
Du behöver inga förkunskaper. Utbildningen i TypeScript Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.
Hur lång tid tar lektionen ”Option- och Maybe-typer”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här TypeScript Academy-lektionen?
Ja. Varje TypeScript Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Problemet med att kasta fel
- Modellera Result-typer
- Option- och Maybe-typer
- Railway-oriented programming