TypeScript Academy · Lektion

Option- och Maybe-typer

Modellera om ett värde finns eller saknas på ett uttryckligt sätt.

Lektion 3 av 413 steg

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)); // 0

Mappa ö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); // 102

Snabb 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.

Gratis att börja

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

  1. Problemet med att kasta fel
  2. Modellera Result-typer
  3. Option- och Maybe-typer
  4. Railway-oriented programming
← Tillbaka till TypeScript Academy