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

使用useState遇类型错误:MyInterface[]无法分配给SetStateAction参数

解决TypeScript类型不匹配错误:MyInterface[] 无法赋值给 SetStateAction<MyInterface | null>

问题原因

你定义的selection状态类型是MyInterface | null(单个对象或空值),但尝试传入的defaultValue是MyInterface[]类型(对象数组),两者类型不兼容,导致TypeScript抛出类型错误。

解决方案

根据业务需求选择以下任意一种处理方式:

1. 仅需要存储单个对象(保持原state类型)

如果selection的设计就是存储单个MyInterface对象或null,从defaultValue数组中取目标元素赋值即可,比如取第一个元素:

useEffect(() => {
  // 数组为空时自动设为null
  setSelection(defaultValue[0] || null);
}, [defaultValue]);

2. 需要存储对象数组(修改state类型)

如果selection本来就应该存储多个对象,直接修改state的类型定义为数组类型:

// 允许数组或null
const [selection, setSelection] = useState<MyInterface[] | null>(null);
// 或者默认值设为空数组(更常见)
const [selection, setSelection] = useState<MyInterface[]>([]);

之后就可以直接赋值:

useEffect(() => {
  setSelection(defaultValue);
}, [defaultValue]);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 03:53:12