[英]Why can an Array not be used in useState where the generic is of the same type as the array
我已经定义了一种数据类型
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 [])'。 对象文字只能指定已知的属性,而'myTableData'在'IOptions [] |类型中不存在。 (()=> IOptions [])'。ts(2345)
这是为什么? 我怎样才能解决这个问题?
useState<{myTableData: IOptions[]}>({myTableData});
您告诉打字稿状态是IOptions的数组,然后为其提供一个对象,请告诉我这是否有帮助
您将类型定义为IOptions的数组,而将状态设置为键为myTableData
的对象
您可以选择仅将数组置于如下状态
let [state, setState] = React.useState<IOptions[]>(myTableData);
或将类型更改为对象
interface DataObj = {
myTableData: IOptions[]
}
let [state, setState] = React.useState<DataObj>({
myTableData
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.