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
Problem z fetch
const res = await fetch('/api/user');
const data = await res.json(); // data: any — unsafeGeneryczny wrapper fetch
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
interface User { id: number; name: string; }
const user = await fetchJson<User>('/api/users/1');
console.log(user.name); // typed as stringDodawanie obsługi błędów
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
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
Typowanie AbortController
const ctrl = new AbortController();
const data = await fetchJson<User>('/api/users/1', { signal: ctrl.signal });
setTimeout(() => ctrl.abort(), 5000);Interceptor bazowego URL
class ApiClient {
constructor(private baseUrl: string) {}
get<T>(path: string): Promise<T> {
return fetchJson<T>(`${this.baseUrl}${path}`);
}
}Typowane nagłówki
const headers: Record<string, string> = {
Authorization: `Bearer ${token}`,
'Content-Type': 'application/json',
};Typy paginacji
interface Paginated<T> { data: T[]; page: number; total: number; }
const result = await fetchJson<Paginated<User>>('/api/users?page=1');Szybki test
Podsumowanie
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
- Typowanie odpowiedzi Fetch za pomocą generycznych opakowań
- Walidacja w czasie działania za pomocą Zod
- OpenAPI Codegen: automatycznie generowane typy
- Przegląd bezpiecznego typowo klienta tRPC