Pesquisa de site

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

Artigos relacionados