Skip to content

Função typedFetch

Assinatura

typescript
typedFetch<T, E extends ClientErrors>(url: FetchParams[0], options?: FetchParams[1])
  • T: Tipo esperado do corpo da resposta
  • E: 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
});

Lançado sob a Licença MIT.