0Pricing
TypeScript Academy · Lekcja

Typowanie odpowiedzi Fetch za pomocą generycznych opakowań

Napisz typowany pomocnik fetch, który zwraca bezpieczne typy.

Typowanie odpowiedzi Fetch za pomocą generycznych opakowań to bezpłatna lekcja TypeScript Academy na CoddyKit. To lekcja 1 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

Pisz typowane funkcje pomocnicze fetch, aby bezpiecznie korzystać z interfejsów API HTTP.

Problem z fetch

API fetch zwraca Promise, a .json() zwraca Promise. Bez typów tracisz całe bezpieczeństwo typów.
const res = await fetch('/api/user');
const data = await res.json(); // data: any — unsafe

Generyczny wrapper fetch

Utwórz typowanego pomocnika fetch, który zakłada określony kształt odpowiedzi.
async function fetchJson<T>(url: string): Promise<T> {
  const res = await fetch(url);
  if (!res.ok) throw new Error(`HTTP error: ${res.status}`);
  return res.json() as Promise<T>;
}

Używanie wrappera

Wywołuj wrapper z jawnym argumentem typu.
interface User { id: number; name: string; }
const user = await fetchJson<User>('/api/users/1');
console.log(user.name); // typed as string

Dodawanie obsługi błędów

Rozszerz wrapper tak, aby zwracał typ Result.
async function safeFetch<T>(url: string): Promise<Result<T>> {
  try {
    const res = await fetch(url);
    if (!res.ok) return err(new Error(`HTTP ${res.status}`));
    return ok(await res.json() as T);
  } catch (e) { return err(e as Error); }
}

Typowanie opcji żądania

Nadaj typ opcjom fetch dla żądań POST/PUT.
async function postJson<T, B>(url: string, body: B): Promise<T> {
  const res = await fetch(url, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify(body),
  });
  return res.json() as Promise<T>;
}

Walidacja odpowiedzi

Zweryfikuj kształt odpowiedzi przed zwróceniem jej jako wartości o określonym typie.

Typowanie AbortController

Nadaj typy AbortController i AbortSignal dla żądań, które można anulować.
const ctrl = new AbortController();
const data = await fetchJson<User>('/api/users/1', { signal: ctrl.signal });
setTimeout(() => ctrl.abort(), 5000);

Interceptor bazowego URL

Utwórz klasę klienta HTTP z bazowym adresem URL.
class ApiClient {
  constructor(private baseUrl: string) {}
  get<T>(path: string): Promise<T> {
    return fetchJson<T>(`${this.baseUrl}${path}`);
  }
}

Typowane nagłówki

Nadaj typy nagłówkom żądań i odpowiedzi.
const headers: Record<string, string> = {
  Authorization: `Bearer ${token}`,
  'Content-Type': 'application/json',
};

Typy paginacji

Nadaj typy stronicowanym odpowiedziom API.
interface Paginated<T> { data: T[]; page: number; total: number; }
const result = await fetchJson<Paginated<User>>('/api/users?page=1');

Szybki test

Co robi `res.json() as Promise` w typowanym wrapperze fetch?

Podsumowanie

Typowanie odpowiedzi fetch za pomocą generycznych wrapperów: opanowano kluczowe koncepcje i wzorce.

Często zadawane pytania

Czy lekcja „Typowanie odpowiedzi Fetch za pomocą generycznych opakowań” jest bezpłatna?

Tak — pełny tekst „Typowanie odpowiedzi Fetch za pomocą generycznych opakowań” 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 „Typowanie odpowiedzi Fetch za pomocą generycznych opakowań”?

Napisz typowany pomocnik fetch, który zwraca bezpieczne typy. Ć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 1 z 4.

Ile czasu zajmuje lekcja „Typowanie odpowiedzi Fetch za pomocą generycznych opakowań”?

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. Typowanie odpowiedzi Fetch za pomocą generycznych opakowań
  2. Walidacja w czasie działania za pomocą Zod
  3. OpenAPI Codegen: automatycznie generowane typy
  4. Przegląd bezpiecznego typowo klienta tRPC
← Powrót do TypeScript Academy