Проблема с машинописным текстом при запросе в SWR

Я хочу знать, какой тип аргументов передается моей функции ниже

const fetcher = async (...args) => {                                
~_  0   const res = await fetch(...args);                                                                       
    1                                            
~   2   return res.json();                                                                                      
    3 };  

Это моя функция сбора данных для SWR, и это ошибка, которую я получаю

[tsserver 2556] [E] Expected 1-2 arguments, but got 0 or more.

КСВ крюк

const { error, data } = useSWR(`/api/albums/list/${user.id}`, fetcher)

1 ответ

Это подпись TypeScript fetchфункция:

      declare function fetch(input: RequestInfo, init?: RequestInit): Promise<Response>;

Если вы используете функции остальных параметров ...args, ваш fetcherфункция может быть вызвана с нулевыми параметрами, и tsc не будет сообщать об ошибках.

      fetcher();

Или много параметров (например, четыре параметра):

      fetcher("localhost", {}, {}, {});

Затем вы используете синтаксис распространения для вызова API выборки . Параметр распространения не соответствует сигнатуре функции выборки (параметр НЕ может быть равен нулю или больше двух), поэтому tsc сообщает об ошибке.

Поэтому вам лучше изменить его следующим образом:

      const fetcher = async (
  input: RequestInfo,
  init: RequestInit,
  ...args: any[]
) => {
  const res = await fetch(input, init);
  return res.json();
};

версия пакета: "typescript": "^4.1.3"

Другие вопросы по тегам