Função typedFetch
Assinatura
typescript
typedFetch<T, E extends ClientErrors>(url: FetchParams[0], options?: FetchParams[1])T: Tipo esperado do corpo da respostaE: Classes de erro de cliente específicas (opcional)url: String de URL ou objeto Request (igual ao fetch nativo)options: Opções RequestInit (igual ao fetch nativo)
Retorna uma Promise com { response: TypedResponse<T> | null, error: E | ServerErrors | NetworkError | null }
Compatibilidade com a API Fetch
A função typedFetch tem API idêntica à função fetch() nativa. Isso significa:
- ✅ Todas as opções do fetch funcionam:
method,headers,body,credentials,cache, etc. - ✅ Suporte completo ao AbortController via opção
signal - ✅ Timeout de requisição usando
AbortSignal.timeout() - ✅ Mesmos tipos de parâmetros do fetch nativo
- ✅ Substituição direta para chamadas fetch existentes
Exemplos com Recursos do Fetch
Cancelamento de Requisição
typescript
const controller = new AbortController();
const { response, error } = await typedFetch<User[]>('/api/users', {
signal: controller.signal
});
// Cancelar a requisição
controller.abort();Timeout de Requisição
typescript
const { response, error } = await typedFetch<User[]>('/api/users', {
signal: AbortSignal.timeout(5000) // timeout de 5 segundos
});Opções Avançadas
typescript
const { response, error } = await typedFetch<User>('/api/users', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer token'
},
body: JSON.stringify(userData),
credentials: 'include',
cache: 'no-cache',
signal: controller.signal
});