Effect-tyyppi
Ymmärtäkää Effect -tyyppi.
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 DatabaseAllekirjoituksen 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.
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.