You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript中useState初始化状态遇TS2345错误求助

问题原因及解决方法

错误核心

你给useState声明的类型是Array<Approval>(等价于Approval[]),但初始化时传入的是空对象{}——对象类型和数组类型不匹配,这就是触发TypeScript报错的直接原因。

报错信息解读

TypeScript的报错已经明确指出:{}无法赋值给Approval[] | (() => Approval[])类型。因为你声明的状态只能是Approval类型的数组,或者返回该数组的初始化函数,而空对象既不是数组,也不是符合要求的函数,自然通不过类型检查。

正确写法

根据业务需求,选择以下两种初始化方式:

  1. 初始状态为空数组(最常用,适合列表类数据初始为空的场景):
const [approvals, setApprovals] = useState<Approval[]>([]);
  1. 初始状态为未定义(适合数据还没加载的场景,需要后续赋值):
const [approvals, setApprovals] = useState<Approval[] | undefined>(undefined);

总结

TypeScript对类型匹配要求严格,数组类型的状态必须用数组格式初始化,不能用对象。只要把初始值从{}改成[](或符合类型要求的其他值),报错就会消失。

内容的提问来源于stack exchange,提问作者JarochoEngineer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 09:27:12