我在将对象数组分配给基于接口的数组时遇到这个问题
目前在我的接口上有这个实现。

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);

10-05 20:46