Tipando respostas de fetch com wrappers genéricos
Escreva um auxiliar fetch tipado que retorne tipos seguros
Tipando respostas de fetch com wrappers genéricos é uma aula grátis de TypeScript Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de TypeScript Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de TypeScript Academy inclui 4 aulas no total.
Boas-vindas
O problema com fetch
const res = await fetch('/api/user');
const data = await res.json(); // data: any — unsafeWrapper genérico de 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>;
}Usando o wrapper
interface User { id: number; name: string; }
const user = await fetchJson<User>('/api/users/1');
console.log(user.name); // typed as stringAdicionando tratamento de erros
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); }
}Tipagem das opções da solicitação
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>;
}Validação da resposta
Tipagem de AbortController
const ctrl = new AbortController();
const data = await fetchJson<User>('/api/users/1', { signal: ctrl.signal });
setTimeout(() => ctrl.abort(), 5000);Interceptor de URL base
class ApiClient {
constructor(private baseUrl: string) {}
get<T>(path: string): Promise<T> {
return fetchJson<T>(`${this.baseUrl}${path}`);
}
}Cabeçalhos tipados
const headers: Record<string, string> = {
Authorization: `Bearer ${token}`,
'Content-Type': 'application/json',
};Tipos de paginação
interface Paginated<T> { data: T[]; page: number; total: number; }
const result = await fetchJson<Paginated<User>>('/api/users?page=1');Verificação rápida
Recapitulação
Perguntas Frequentes
A aula “Tipando respostas de fetch com wrappers genéricos” é grátis?
Sim — o texto completo de “Tipando respostas de fetch com wrappers genéricos” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de TypeScript Academy, atualize para CoddyKit PRO. O curso de TypeScript Academy inclui 4 aulas no total.
O que vou aprender em “Tipando respostas de fetch com wrappers genéricos”?
Escreva um auxiliar fetch tipado que retorne tipos seguros Você pratica TypeScript Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar TypeScript Academy?
Nenhuma experiência prévia é necessária. TypeScript Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Tipando respostas de fetch com wrappers genéricos”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de TypeScript Academy?
Sim. Cada aula de TypeScript Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Tipando respostas de fetch com wrappers genéricos
- Validação em tempo de execução com Zod
- Geração de código OpenAPI: tipos gerados automaticamente
- Visão geral do cliente tRPC com segurança de tipos