将对象数组分配到基于接口的数组中

时间:2018-01-02 03:02:25

标签: javascript arrays angular typescript

我在将一个对象数组分配给基于接口的数组

时遇到了这个问题

目前我在我的界面item.ts

上有这个实现
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[]'.

1 个答案:

答案 0 :(得分:1)

您的作业无法正常工作,因为在错误状态下,该值与字段的类型不兼容。您无法将IItem[][]分配给IItem[],因为前者是 IItem的数组,而后者只是IItem的数组1}}。您需要展平数组或将selectedItems字段的类型更改为IItem[][]。如果要展平数组,可以使用Array.prototype.concat

const itemArr = this.items.examItems.map(examItem=> examItem.item);
this.selectedItems = Array.prototype.concat.apply([], itemArr);