升级React 18后TypeScript项目出现never类型赋值错误求助
React 18升级后TypeScript类型推断错误解决方案
问题根源
你遇到的Argument of type 'number' is not assignable to parameter of type 'never'错误,本质是当前使用的TypeScript 3.7.5版本过旧,与React 18对应的@types/react、@types/react-dom类型定义不兼容。React 18的类型依赖了更高版本TypeScript的类型推断能力,旧版TS无法正确处理新版类型定义下的代码逻辑,导致空数组被默认推断为never[],进而触发类型不匹配错误。
解决方案
1. 优先升级TypeScript版本(推荐)
将TypeScript升级至4.1或更高版本(建议选择4.4+,兼容性更优),执行以下命令:
npm install typescript@^4.4.0 --save-dev
升级后,TypeScript的类型推断系统会正常识别数组元素类型,无需手动为每个数组添加类型注解,即可解决这类批量出现的推断错误。
2. 临时配置调整(仅应急使用)
如果暂时无法升级TS版本,可以修改tsconfig.json中的配置放宽类型检查,但这会降低代码的类型安全性,不推荐长期使用:
- 将
strict字段设置为false(关闭所有严格类型检查规则); - 或单独关闭
noImplicitAny规则,但这可能导致其他隐式any类型的问题。
补充说明
React官方升级文档未明确提及TS版本要求,是因为React 18本身对TS版本没有强制限制,但配套的@types/react@18类型定义包要求TypeScript版本至少为4.1,旧版TS无法适配这些类型定义,才会引发大量类似的类型推断错误。
内容的提问来源于stack exchange,提问作者Mohamed Ibrahim
相关产品推荐
相关产品推荐

