Проблема с машинописным текстом при запросе в 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"