TypeScript Academy · Oppitunti

Effect-tyyppi

Ymmärtäkää Effect -tyyppi.

Oppitunti 2/413 vaihetta

Effect-tyyppi on ilmainen TypeScript Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu TypeScript Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. TypeScript Academy-kurssilla on yhteensä 4 oppituntia.

Effect-tyyppi

Keskeinen tyyppi on Effect<Success, Error, Requirements>. Sen kolme tyyppiparametria kuvaavat kaiken, mitä laskenta voi tehdä: mitä se tuottaa, miten se voi epäonnistua ja mitä se tarvitsee.

import { Effect } from "effect";
// Effect<A, E, R>
//   A = success value type
//   E = error type
//   R = required services (dependencies)

Onnistumiskanava (A)

Ensimmäinen parametri on onnistumisen yhteydessä tuotettava arvo. Effect.succeed luo efektin, joka tuottaa aina arvon ilman virheitä ja vaatimuksia.

import { Effect } from "effect";

const ok = Effect.succeed(42);
// Effect<number, never, never>

Virhekanava (E)

Toinen parametri on tyypitetty virhe. never tarkoittaa, ettei efekti voi epäonnistua. Todellinen virhetyyppi tarkoittaa, että kutsujien on varauduttava siihen.

import { Effect } from "effect";

class NotFound { readonly _tag = "NotFound"; }
const failing = Effect.fail(new NotFound());
// Effect<never, NotFound, never>

Vaatimuskanava (R)

Kolmas parametri luettelee palvelut, joista efekti riippuu. never tarkoittaa, että efekti on itsenäinen; muussa tapauksessa sitä ei voi suorittaa ennen näiden palveluiden tarjoamista.

// Conceptually:
// Effect<User, NotFound, Database>
// produces a User, may fail with NotFound, needs a Database

Allekirjoituksen lukeminen

Voitte lukea efektityypin lauseena: "tuottaa A:n tai epäonnistuu E:n kanssa, kun käytettävissä on R". Tämä yksi tyyppi korvaa Promisen, implisiittiset throw-poikkeukset ja piilotetut globaalit muuttujat.

never identiteettinä

never on E- ja R-kanavien neutraali arvo: mahdollisia virheitä ei ole eikä vaadittuja riippuvuuksia ole. Koostamisen aikana virhe- ja vaatimus-tyypit kertyvät unioneiksi.

Efektien luominen arvoista

Yleisiä konstruktoreita ovat succeed (puhdas arvo), fail (tyypitetty virhe) ja sync (synkronisen sivuvaikutuksen kääriminen).

import { Effect } from "effect";

const now = Effect.sync(() => Date.now());
// Effect<number, never, never>

Asynkronisen työn kääriminen

Effect.promise ja Effect.tryPromise nostavat promiset efekteiksi; tryPromise mahdollistaa hylkäyksen muuntamisen tyypitetyksi virheeksi E-kanavassa.

import { Effect } from "effect";

const fetchUser = Effect.tryPromise({
  try: () => fetch("/user").then((r) => r.json()),
  catch: (e) => new Error("fetch failed: " + String(e)),
});
// Effect<any, Error, never>

Kanavien tyyppialiaset

Palveluita varten Effect tarjoaa koko nimen Effect.Effect<A, E, R>. Kanavat ovat toisistaan riippumattomia: virheitä voi olla ilman vaatimuksia tai vaatimuksia ilman virheitä.

Miksi kolme kanavaa

Kolme kanavaa kuvaavat kolmea asiaa, jotka vaikeuttavat koodin ymmärtämistä: tulosta, epäonnistumistilanteita ja kontekstia, jossa koodi suoritetaan. Kaikkien kolmen tuominen näkyviin yhdessä tyypissä antaa Effectille sen turvallisuustakuut.

Miksi tällä on merkitystä

Effect<A, E, R>-tyypin ymmärtäminen on kaiken muun perusta: yhdistäminen koostaa näitä kanavia, virheenkäsittely rajaa E:tä ja riippuvuuksien tarjoaminen tyhjentää R:n. Kun luette tyypin, tiedätte tarkasti, mitä laskenta tekee.

Pikatarkistus

Varmistakaa, että ymmärrätte Effect-tyypin.

Kertaus

Effect<A, E, R> koodaa onnistumisen arvon, tyypitetyn virheen ja tarvittavat riippuvuudet yhteen tyyppiin. never on E- ja R-kanavien neutraali arvo. Konstruktorit, kuten succeed, fail, sync ja tryPromise, rakentavat efektejä asianmukaisine kanavineen.

Aloita maksutta

Opi TypeScript tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
101
Oppitunnit
352

Usein kysytyt kysymykset

Onko oppitunti ”Effect-tyyppi” ilmainen?

Kyllä – oppitunnin ”Effect-tyyppi” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko TypeScript Academy-kurssin, päivitä CoddyKit PROhon. TypeScript Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Effect-tyyppi”?

Ymmärtäkää Effect -tyyppi. Harjoittelet TypeScript Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni TypeScript Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin TypeScript Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.

Kuinka kauan ”Effect-tyyppi”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä TypeScript Academy-oppitunnilla?

Kyllä. Jokainen TypeScript Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Miksi efektijärjestelmät ovat tärkeitä
  2. Effect-tyyppi
  3. Efektien koostaminen
  4. Virhekanavat ja riippuvuudet
← Takaisin: TypeScript Academy