我在将对象数组分配给基于接口的数组时遇到这个问题
目前在我的接口上有这个实现。
export interface IItem {
id: number, text: string, members: any
}
在item.component.ts上
export class ItemComponent {
selectedItems: IItem[] = [];
items: IExamItems;
getSelected(): void {
this.selectedItems = this.items.examItems.map(examItem=> examItem.item)
}
}
似乎我总是犯这个错误
TS2322: Type 'IItem[][]' is not assignable to type 'IItem[]'.
Type 'IItem[]' is not assignable to type 'IItem'.
Property 'id' is missing in type 'IItem[]'.
最佳答案
赋值不起作用,因为在错误状态下,值的类型与字段不兼容。不能将IItem[][]
赋给IItem[]
,因为前者是IItem
的数组,后者只是IItem
的数组。您要么需要展平数组,要么将selectedItems
字段的类型更改为IItem[][]
。如果要展平数组,可以使用Array.prototype.concat
:
const itemArr = this.items.examItems.map(examItem=> examItem.item);
this.selectedItems = Array.prototype.concat.apply([], itemArr);