TypeScript Academy · Les

Effects combineren

Koppel en combineer effects met pipe en generators

Les 3 van 413 stappen

Effects combineren is een gratis TypeScript Academy-les op CoddyKit. Dit is les 3 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject TypeScript Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus TypeScript Academy bevat in totaal 4 lessen.

Effecten samenstellen

Effecten zijn waarden, dus je bouwt programma's door ze samen te stellen. De belangrijkste hulpmiddelen zijn Effect.pipe, Effect.map, Effect.flatMap en de op generatoren gebaseerde Effect.gen-syntaxis.

pipe: Door functies heen leiden

pipe leidt een effect van links naar rechts door een reeks transformaties, zodat diepe nesten worden vermeden.

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 30

map: De succeswaarde transformeren

Effect.map past een zuivere functie toe op de succeswaarde, terwijl de fout- en vereistenkanalen ongewijzigd blijven.

import { Effect } from "effect";

const doubled = Effect.map(Effect.succeed(21), (n) => n * 2);
// Effect<number, never, never>

flatMap: Effecten opeenvolgend uitvoeren

Wanneer de volgende stap zelf een effect is, gebruik je flatMap (ook chain genoemd). Het voert het eerste effect uit en geeft de waarde ervan vervolgens door aan een functie die een ander effect teruggeeft.

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 tegenover flatMap

Gebruik map wanneer je functie een gewone waarde teruggeeft; gebruik flatMap wanneer deze een effect teruggeeft. Als je map gebruikt met een functie die een effect teruggeeft, houd je een genest effect over.

Kanalen stapelen zich op

Wanneer je effecten na elkaar uitvoert, vormen hun fouttypen samen een unie en vormen hun vereisten eveneens een unie. Het samengestelde type weerspiegelt alles wat kan mislukken en alles wat nodig is.

// Effect<A, E1, R1> then Effect<B, E2, R2>
// => Effect<B, E1 | E2, R1 | R2>

Effect.gen: Generatorsyntaxis

Met Effect.gen kun je opeenvolgende effectcode schrijven die leest als async/await, waarbij je yield* gebruikt om elk effect uit te pakken.

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 tegenover pipe

gen is duidelijker voor lineaire stromen met meerdere stappen en tussenliggende variabelen; pipe blinkt uit bij korte ketens van transformaties. Ze werken zonder problemen samen.

Onafhankelijke effecten combineren

Effect.all voert meerdere effecten uit en verzamelt hun resultaten, waarbij de fouten en vereisten van alle effecten worden samengevoegd.

import { Effect } from "effect";

const both = Effect.all([Effect.succeed(1), Effect.succeed("x")]);
// Effect<[number, string], never, never>

Nog steeds lui

Dit alles beschrijft alleen het programma. Er wordt niets uitgevoerd totdat je het op het uiteindelijke uitvoerpunt uitvoert met Effect.runPromise of Effect.runSync.

import { Effect } from "effect";
// const result = await Effect.runPromise(program);

Waarom dit belangrijk is

Compositie maakt effecten praktisch: je stelt kleine, getypeerde onderdelen samen tot grote programma's, terwijl de compiler elke fout en afhankelijkheid bijhoudt. map, flatMap, pipe en gen zijn de dagelijkse werkwoorden van Effect-code.

Korte controle

Controleer of je begrijpt hoe je effecten samenstelt.

Samenvatting

Je stelt effecten samen met map (succeswaarden transformeren), flatMap (stappen die effecten teruggeven na elkaar uitvoeren), pipe (transformaties doorgeven) en Effect.gen (await-achtige generatorsyntaxis). Fout- en vereistenkanalen worden samengevoegd tot unies, en er wordt niets uitgevoerd totdat je het aan de rand uitvoert.

Gratis beginnen

Leer TypeScript met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
101
Lessen
352

Veelgestelde vragen

Is de les “Effects combineren” gratis?

Ja — de volledige tekst van “Effects combineren” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus TypeScript Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus TypeScript Academy bevat in totaal 4 lessen.

Wat leer ik in “Effects combineren”?

Koppel en combineer effects met pipe en generators Je oefent met TypeScript Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met TypeScript Academy te beginnen?

Ervaring vooraf is niet nodig. TypeScript Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.

Hoe lang duurt de les “Effects combineren”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over TypeScript Academy?

Ja. Elke les over TypeScript Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Waarom effectsystemen belangrijk zijn
  2. Het Effect-type
  3. Effects combineren
  4. Foutkanalen en afhankelijkheden
← Terug naar TypeScript Academy