javascript - Erro do TypeScript - Esperado 1-2 argumentos, mas recebidos 0 ou mais. TS2556
Eu estava usando essa declaração em JavaScript, mas quando tento usá-la em um projeto TypeScript, recebo um erro. Ele está reclamando sobre fetch(...args)
const fetcher = (...args) => fetch(...args).then(response => response.json());
Expected 1-2 arguments, but got 0 or more. TS2556
Resposta #1
Isso deve ajudar você:
const fetcher = (...args: [input: RequestInfo, init?: RequestInit | undefined]) => fetch(...args).then(response => response.json());
Você deve digitar explicitamente os argumentos para fetch. Ele espera 1-2 argumentos.
Se você quiser usar o operador rest, você deve informar ao TS que também espera dois argumentos na sua função de ordem superior
ATUALIZAÇÃO
Abordagem genérica. Se você quiser obter o tipo dos argumentos de qualquer função, basta usar o utilitário Parameters.
type FetchParameters = Parameters<typeof fetch>
Resposta #2
Pegando esta resposta do comentário de @Keith, que foi a única coisa que funcionou para mim:
const fetcher = (...args: Parameters<typeof fetch>) => {
fetch(...args).then(response => response.json());
}
Especificamente adicionando este Parameters<typeof fetch> como o tipo de ...args
