Array.map och Typescript Object spread-operatorn mappar inte till den ursprungliga arrayen


Jag har en array med medlemmar i Typescript.

const members = [
  {
    name: 'John Lennon',
    id: 1
  },
  {
    name: 'Led Zeppelin',
    id: 2
  },
  {
    name: 'Freddie Mercury',
    id: 3
  }
];

När jag försöker mappa över det och lägga till en nyckel

members.map(member => {
    member.designation = 'Singer';
    return member;
 });

Den skriver framgångsrikt över en array och lägger till nyckelbeteckning. Men när jag försöker göra samma sak med hjälp av Object spread-operatorn.

members.map(member => ({
  ...member,
  designation: 'Singer'
}));

Det kompilerar framgångsrikt utan fel, men samtidigt mappas inte nyckeln designation över min members-array.

Är det rätt sätt att göra det på, eller missar jag något och det är bara ett problem med Typescript Object spread-operationen.

Svar #1

I det första exemplet modifierar du objektet, i det andra skapar du ett nytt objekt som kommer att ha värdena från den ursprungliga medlemmen och den nya egenskapen "designation". Du behöver ta den nya objektarrayen som skapats av map och använda den:

var memberWithDesignation = members.map(member => ({
  ...member,
  designation: 'Singer'
}));
console.log(memberWithDesignation[0].designation); // Will output Singer

Relaterade artiklar