arrays - 为什么不能在泛型与数组类型相同的useState中使用数组
问题描述
我已经定义了一个数据类型
interface IOptions {
name: string
value: any
type: string
}
并创建了一个该类型的数组
let myTableData: IOptions[] = [
{name: "A string", value: "string to display", type: "string"},
{name: "A number", value: 42, type: "number"},
{name: "A combobox Enum style", value: "1", type: "enum"},
{name: "A bool flag", value: true, type: "bool"},
];
现在我想定义一个使用这种数据类型并且被输入的状态
let [state, setState] = React.useState<IOptions[]>({
myTableData
});
然而,这给了我错误信息
'{ myTableData: IOptions[]; 类型的参数 }' 不可分配给 'IOptions[] 类型的参数 | (() => IOptions[])'。对象字面量只能指定已知属性,而 'IOptions[] | 类型中不存在 'myTableData' (() => IOptions[])'.ts(2345)
这是为什么?我怎样才能解决这个问题?
解决方案
useState<{myTableData: IOptions[]}>({myTableData});
你告诉 typescript 状态是一个 IOptions 数组,然后给它一个对象,让我知道这是否有帮助
推荐阅读
- java - 无法将文本发送到文本框元素
- php - 如何在具有不同属性值的页面上多次使用相同的简码
- mongodb - 戈朗。MongoDB bulkWrite() 更新文档切片
- django - Django TruncDay 最大分组限制
- python - TypeError:“int”对象不可下标 - 创建列表
- c# - 类型向量
在 MathNet 中添加列表,列表中的每个成员都更改值 - android - Android Volley - JsonArrayRequest 返回空对象
- python - 用beautifulsoup gettext 抓取多个东西以获取roop 代码
- eclipse - 如何在 Eclipse 的“远程系统”中为用户操作添加键绑定?
- javascript - Chrome.extensions :打开选项卡 > 执行脚本 > 关闭选项卡