2 votes

Assignation d'un tableau d'objets dans un tableau basé sur une interface

Je rencontre ce problème lors de l'affectation d'un tableau d'objets à un tableau basé sur une interface.

Actuellement j'ai cette implémentation sur mon interface item.ts

export interface IItem {
    id: number, text: string, members: any
}

et sur le fichier item.component.ts

export class ItemComponent {
    selectedItems: IItem[] = [];
    items: IExamItems;
    getSelected(): void {
        this.selectedItems = this.items.examItems.map(examItem=> examItem.item)
    }
}

il semble que j'obtienne toujours cette erreur

TS2322: Type 'IItem[][]' is not assignable to type 'IItem[]'.
Type 'IItem[]' is not assignable to type 'IItem'.
Property 'id' is missing in type 'IItem[]'.

1voto

Greg Rozmarynowycz Points 455

Votre affectation ne fonctionne pas car, comme l'indique l'erreur, la valeur a un type incompatible avec le champ. Vous ne pouvez pas assigner IItem[][] a IItem[] car le premier est un tableau de tableaux de IItem et le dernier est juste un tableau de IItem . Vous devez soit aplatir le tableau, soit modifier le type de selectedItems campo a IItem[][] . Si vous voulez aplatir le tableau, vous pouvez utiliser Array.prototype.concat :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X