Typescript调用useState报错Expected 0 arguments, but got 1求助
React useState传入初始值提示「预期0个参数,实际传入1个」解决方案
你编写的useState调用语法本身完全符合React + TypeScript开发规范,该报错属于类型定义不兼容或IDE缓存导致的提示错误,可按照以下步骤排查解决:
- 检查React类型包安装与版本匹配
确保项目安装了和当前React版本适配的@types/react、@types/react-dom类型依赖,缺失或版本不匹配会导致Hook类型识别异常,可执行对应包管理命令重新安装:
# npm 安装 npm install @types/react @types/react-dom --save-dev # yarn 安装 yarn add @types/react @types/react-dom --dev # pnpm 安装 pnpm add @types/react @types/react-dom -D
- 升级TypeScript版本
如果你使用的是React 18及以上版本,需要保证项目TypeScript版本不低于4.7,低版本TS无法适配新版React的类型定义。你可以执行tsc -v查看当前TS版本,执行以下命令升级到最新稳定版:
npm install typescript@latest --save-dev
- 排查同名变量/函数覆盖
检查当前文件或全局类型声明中,是否存在自定义命名为useState的函数、变量或类型,覆盖了React导出的原生Hook,将自定义的重命名即可解决冲突。 - 重启VSCode TypeScript服务
如果上述配置都无问题,属于IDE缓存异常导致的错误提示:按下Ctrl+Shift+P(Mac系统为Cmd+Shift+P)调出命令面板,搜索「TypeScript: 重新加载TS项目」执行,等待服务重启后报错即可消失。
内容的提问来源于stack exchange,提问作者Falcescu Alin
相关产品推荐
相关产品推荐

