0Pricing
TypeScript Academy · Lekcja

Wzorzec Result: Ok i Err

Zwracaj błędy jako wartości zamiast je zgłaszać.

Wzorzec Result: Ok i Err 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.

Witamy

Wzorzec Result zwraca błędy jako wartości, umożliwiając bezpieczną typowo obsługę błędów bez try/catch.

Typ Result

Zdefiniuj generyczny typ Result z wariantami Ok i Err.
type Ok<T> = { ok: true; value: T };
type Err<E = Error> = { ok: false; error: E };
type Result<T, E = Error> = Ok<T> | Err<E>;

Konstruktory pomocnicze

Utwórz pomocnicze funkcje ok() i err(), aby kod był czytelniejszy.
const ok = <T>(value: T): Ok<T> => ({ ok: true, value });
const err = <E>(error: E): Err<E> => ({ ok: false, error });

Zwracanie Results

Zwracaj Results z funkcji zamiast zgłaszać wyjątki.
async function fetchUser(id: number): Promise<Result<User>> {
  try {
    const user = await db.findUser(id);
    if (!user) return err(new Error('Not found'));
    return ok(user);
  } catch (e) { return err(e as Error); }
}

Używanie Results

Sprawdź flagę ok przed użyciem wartości.
const result = await fetchUser(1);
if (result.ok) {
  console.log(result.value.name); // User
} else {
  console.error(result.error.message);
}

Pomocnik mapResult

Przekształcaj wartość pomyślnego Result za pomocą mapowania.
function mapResult<T, U, E>(r: Result<T, E>, fn: (v: T) => U): Result<U, E> {
  return r.ok ? ok(fn(r.value)) : r;
}

Pomocnik flatMapResult

Bezpiecznie łącz funkcje zwracające Result.
function flatMap<T, U, E>(r: Result<T, E>, fn: (v: T) => Result<U, E>): Result<U, E> {
  return r.ok ? fn(r.value) : r;
}

Result a wyjątki

Wyjątki są niejawne i nie mają typów. Results to jawne wartości uwzględnione w sygnaturze typu.

Obsługa przez biblioteki

Biblioteki takie jak neverthrow, true-myth i fp-ts udostępniają gotowe do użycia produkcyjnie typy Result.

Result w handlerach API

Używaj Results w handlerach Express, aby zapewnić przejrzyste propagowanie błędów.
app.get('/users/:id', async (req, res) => {
  const result = await fetchUser(parseInt(req.params.id));
  if (result.ok) res.json(result.value);
  else res.status(404).json({ error: result.error.message });
});

Asynchroniczne Results

Użyj Promise>, aby połączyć asynchroniczność ze wzorcem Result.
type AsyncResult<T, E = Error> = Promise<Result<T, E>>;

Szybki test

Jaka jest główna przewaga wzorca Result nad zgłaszaniem wyjątków?

Podsumowanie

Wzorzec Result: Ok i Err: poznano kluczowe koncepcje tego tematu oraz sposoby stosowania ich w rzeczywistych projektach TypeScript.

Często zadawane pytania

Czy lekcja „Wzorzec Result: Ok i Err” jest bezpłatna?

Tak — pełny tekst „Wzorzec Result: Ok i Err” 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 „Wzorzec Result: Ok i Err”?

Zwracaj błędy jako wartości zamiast je zgłaszać. Ć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 „Wzorzec Result: Ok i Err”?

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.

Wszystkie lekcje w tym kursie

  1. Typowane klasy błędów i hierarchie
  2. Wzorzec Result: Ok i Err
  3. Zawężanie przechwyconych błędów (unknown a Error)
  4. Obsługa błędów w asynchronicznym kodzie TypeScript
← Powrót do TypeScript Academy