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
});