我正在尝试创建一个对象数组,例如:
objectExample[a].push({ id: john, detail: true });
objectExample[a].push({ id: james, detail: false});
const objectExample = {
a = [ { id: john, detail: true},
{ id: james, detail: false}];
}
如果我在Typescript中尝试此操作:
const objectExmaple: { [key: string]: { [key: string]: string | boolean}[]} = [];
我在objectType上遇到此错误:
Type 'never[]' is not assignable to type '{ [key: string]: { [key: string]: string | boolean; }[]; }'.
Index signature is missing in type 'never[]'.ts(2322)
如何解决此错误?
答案 0 :(得分:0)
有一些问题:
objectExample
初始化为[]
type Item = { [key: string]: string | boolean}
// Same as type Item = { [key: string]: string | boolean}
const objectExample: Record<string, Item[]> = {
a: [ { id: 'john', detail: true},
{ id: 'james', detail: false}]
}
objectExample.a.push({ id: 'john', detail: true });
objectExample.a.push({ id: 'james', detail: false});
Here是指向工作场所的链接
答案 1 :(得分:0)
objectExmaple
是一个对象,而不是数组,因此您需要使用{}
对其进行初始化。另外,如果您希望键a
有一个数组,则需要在初始化时或在使用push
之前将其放入数组:
const objectExmaple: { [key: string]: { [key: string]: string | boolean }[] } = {
a: []
};
objectExmaple['a'].push({ id: 'john', detail: true });
objectExmaple['a'].push({ id: 'james', detail: false});
也可以将类型更清晰地写为Record<string, Array<Record<string, string | boolean>>>