Typ Effect
Zrozum Effect
Typ Effect to bezpłatna lekcja TypeScript Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej TypeScript Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs TypeScript Academy zawiera 4 lekcji w sumie.
Typ efektu
Centralnym typem jest Effect<Success, Error, Requirements>. Jego trzy parametry typu opisują wszystko, co może zrobić obliczenie: co zwraca, w jaki sposób może się nie powieść i czego potrzebuje.
import { Effect } from "effect";
// Effect<A, E, R>
// A = success value type
// E = error type
// R = required services (dependencies)Kanał wyniku (A)
Pierwszy parametr to wartość zwracana w przypadku powodzenia. Effect.succeed tworzy efekt, który zawsze zwraca wartość, bez błędów i wymagań.
import { Effect } from "effect";
const ok = Effect.succeed(42);
// Effect<number, never, never>Kanał błędu (E)
Drugi parametr to typ błędu. never oznacza, że efekt nie może się nie powieść. Rzeczywisty typ błędu oznacza, że wywołujący musi go uwzględnić.
import { Effect } from "effect";
class NotFound { readonly _tag = "NotFound"; }
const failing = Effect.fail(new NotFound());
// Effect<never, NotFound, never>Kanał wymagań (R)
Trzeci parametr zawiera listę usług, od których zależy efekt. never oznacza, że efekt jest samowystarczalny; w przeciwnym razie nie można go uruchomić, dopóki wymagane usługi nie zostaną dostarczone.
// Conceptually:
// Effect<User, NotFound, Database>
// produces a User, may fail with NotFound, needs a DatabaseOdczytywanie sygnatury
Typ efektu można odczytać jak zdanie: „zwraca A albo kończy się błędem E, przy założeniu R”. Ten pojedynczy typ zastępuje obietnicę, niejawne wyjątki i ukryte zmienne globalne.
never jako element neutralny
never jest neutralną wartością kanałów E i R: oznacza brak możliwego błędu i brak wymaganych zależności. Podczas składania typy błędów i wymagań są gromadzone w postaci sum typów.
Tworzenie efektów z wartości
Typowe konstruktory to: succeed (czysta wartość), fail (typowany błąd) oraz sync (opakowanie synchronicznego skutku ubocznego).
import { Effect } from "effect";
const now = Effect.sync(() => Date.now());
// Effect<number, never, never>Opakowywanie pracy asynchronicznej
Effect.promise i Effect.tryPromise przekształcają obietnice w efekty; tryPromise pozwala zamienić odrzucenie obietnicy na typowany błąd w kanale E.
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>Aliasy typów kanałów
W przypadku usług Effect udostępnia Effect.Effect<A, E, R> jako pełną nazwę. Kanały są niezależne: można mieć błędy bez wymagań albo wymagania bez błędów.
Dlaczego trzy kanały
Trzy kanały opisują trzy elementy, które utrudniają rozumowanie o kodzie: wynik, możliwe niepowodzenia i kontekst, w którym kod jest uruchamiany. Ujęcie wszystkich trzech w jednym typie zapewnia bibliotece Effect gwarancje bezpieczeństwa.
Dlaczego ma to znaczenie
Zrozumienie Effect<A, E, R> jest kluczem do wszystkiego, co następuje później: składanie łączy te kanały, obsługa błędów zawęża E, a dostarczanie zależności usuwa R. Odczytując typ, można dokładnie określić, co robi obliczenie.
Szybkie sprawdzenie
Upewnij się, że rozumiesz typ Effect.
Podsumowanie
Effect<A, E, R> koduje w jednym typie wartość wyniku, typowany błąd i wymagane zależności. never jest neutralną wartością kanałów E i R. Konstruktory, takie jak succeed, fail, sync i tryPromise, tworzą efekty z odpowiednimi kanałami.
Często zadawane pytania
Czy lekcja „Typ Effect” jest bezpłatna?
Tak — pełny tekst „Typ Effect” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu TypeScript Academy, przejdź na CoddyKit PRO. Kurs TypeScript Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Typ Effect”?
Zrozum Effect Ćwiczysz TypeScript Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć TypeScript Academy?
Nie wymagamy żadnego doświadczenia. TypeScript Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Typ Effect”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji TypeScript Academy?
Tak. Każda lekcja TypeScript Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.