Kombinere effekter
Kjed sammen og kombiner effekter med pipe og generatorer.
Kombinere effekter er en gratis leksjon i TypeScript Academy på CoddyKit. Dette er leksjon 3 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i TypeScript Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i TypeScript Academy inneholder totalt 4 leksjoner.
Komponere effekter
Effekter er verdier, så du bygger programmer ved å komponere dem. De viktigste verktøyene er Effect.pipe, Effect.map, Effect.flatMap og den generatorbaserte syntaksen Effect.gen.
pipe: Føre gjennom funksjoner
pipe sender en effekt gjennom en rekke transformasjoner fra venstre mot høyre, slik at du unngår dyp nøsting.
import { Effect, pipe } from "effect";
const program = pipe(
Effect.succeed(2),
Effect.map((n) => n + 1),
Effect.map((n) => n * 10)
);
// Effect<number, never, never> producing 30map: Transformere suksessverdien
Effect.map bruker en ren funksjon på suksessverdien, mens feil- og kravkanalene forblir uendret.
import { Effect } from "effect";
const doubled = Effect.map(Effect.succeed(21), (n) => n * 2);
// Effect<number, never, never>flatMap: Sekvensere effekter
Når neste trinn selv er en effekt, bruker du flatMap (også kalt chain). Den kjører den første effekten og sender deretter verdien til en funksjon som returnerer en annen effekt.
import { Effect, pipe } from "effect";
const getId = Effect.succeed(1);
const loadUser = (id: number) => Effect.succeed({ id, name: "Ada" });
const program = pipe(getId, Effect.flatMap(loadUser));
// Effect<{ id: number; name: string }, never, never>map kontra flatMap
Bruk map når funksjonen returnerer en vanlig verdi; bruk flatMap når den returnerer en effekt. Hvis du bruker map med en funksjon som returnerer en effekt, får du en nøstet effekt.
Kanalene samles
Når du sekvenserer effekter, slås feiltypene deres sammen til unioner, og kravene deres slås også sammen. Den komponerte typen gjenspeiler alt som kan mislykkes, og alt som kreves.
// Effect<A, E1, R1> then Effect<B, E2, R2>
// => Effect<B, E1 | E2, R1 | R2>Effect.gen: Generatorsyntaks
Effect.gen lar deg skrive sekvensiell effektkode som ligner på async/await, ved å bruke yield* til å pakke ut hver effekt.
import { Effect } from "effect";
const program = Effect.gen(function* () {
const id = yield* Effect.succeed(1);
const user = yield* Effect.succeed({ id, name: "Ada" });
return user.name;
});
// Effect<string, never, never>gen kontra pipe
gen er tydeligere for lineære flyter med flere trinn og mellomliggende variabler; pipe passer best for korte transformasjonskjeder. De kan fritt brukes sammen.
Kombinere uavhengige effekter
Effect.all kjører flere effekter og samler resultatene deres, samtidig som feil og krav fra dem alle akkumuleres.
import { Effect } from "effect";
const both = Effect.all([Effect.succeed(1), Effect.succeed("x")]);
// Effect<[number, string], never, never>Fortsatt lat
Alt dette beskriver bare programmet. Ingenting kjøres før du kjører det ved ytterkanten med Effect.runPromise eller Effect.runSync.
import { Effect } from "effect";
// const result = await Effect.runPromise(program);Hvorfor dette er viktig
Komposisjon er det som gjør effekter praktiske: Du setter sammen små, typebestemte deler til store programmer, mens kompilatoren holder oversikt over alle feil og avhengigheter. map, flatMap, pipe og gen er hverdagsverbene i Effect-kode.
Hurtigsjekk
Sjekk forståelsen din av hvordan effekter komponeres.
Oppsummering
Du komponerer effekter med map (transformerer suksessverdier), flatMap (sekvenserer trinn som returnerer effekter), pipe (fører verdier gjennom transformasjoner) og Effect.gen (generator-syntaks som ligner på await). Feil- og kravkanalene samles som unioner, og ingenting kjører før du utfører effekten ytterst i programmet.
Lær deg TypeScript med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 101
- Leksjoner
- 352
Ofte stilte spørsmål
Er leksjonen «Kombinere effekter» gratis?
Ja – hele teksten i «Kombinere effekter» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av TypeScript Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i TypeScript Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «Kombinere effekter»?
Kjed sammen og kombiner effekter med pipe og generatorer. Du øver på TypeScript Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med TypeScript Academy?
Ingen tidligere erfaring er nødvendig. TypeScript Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.
Hvor lang tid tar leksjonen «Kombinere effekter»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne TypeScript Academy-leksjonen?
Ja. Alle TypeScript Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.