javascript - 向 SWR 发出请求时出现 typescript 问题

标签 javascript reactjs typescript next.js 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.
SWR Hook
const { error, data } = useSWR(`/api/albums/list/${user.id}`, fetcher)

最佳答案

这是 fetch 的 TypeScript 签名功能:

declare function fetch(input: RequestInfo, init?: RequestInit): Promise<Response>;
如果你使用函数 rest parameters ...args , 你的 fetcher可以像这样使用零参数调用函数,并且 tsc 不会报告错误。
fetcher();
或者,许多参数(如四个参数):
fetcher("localhost", {}, {}, {});
然后,您使用 spread syntax调用fetch API . spread的参数不满足fetch的函数签名(参数不能为0或大于2),所以tsc报错。
所以你最好像这样修改它:
const fetcher = async (
  input: RequestInfo,
  init: RequestInit,
  ...args: any[]
) => {
  const res = await fetch(input, init);
  return res.json();
};
包版本:"typescript": "^4.1.3"

关于javascript - 向 SWR 发出请求时出现 typescript 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64199630/

相关文章:

javascript - 跟踪链接到我的 iframe/widget 的 URL

javascript - 乘法 2 数组 javascript/jquery

javascript - 如何使用正则表达式来判断字符串中是否有两个非字母数字字符?

php - 为 CakePHP 创建自定义确认弹出窗口

javascript - 使 eslint 具有此规则 : react/forbid-prop-types? 的 propTypes 对象、字符串和数组有什么问题

javascript - 如何更改 Material UI 字体的颜色?

inheritance - 如何在 React 组件和 es6 类中使用继承

angular - 在内容滚动到顶部然后再滚动到底部之前,ionic 3 无限滚动不起作用

javascript - TypeScript - 如何覆盖 lib.d.ts 中的声明?

generics - typescript :强制默认通用类型为 `any` 而不是 `{}`