首页 > 解决方案 > 为什么不能在泛型与数组类型相同的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)

这是为什么?我怎样才能解决这个问题?

标签: arraysreactjstypescript

解决方案


useState<{myTableData: IOptions[]}>({myTableData});

你告诉 typescript 状态是一个 IOptions 数组,然后给它一个对象,让我知道这是否有帮助


推荐阅读