Array.map和Typescript对象扩展运算符不映射到原始数组

时间:2017-10-26 14:29:12

标签: typescript

我在Typescript中有一组成员。

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

当我尝试映射并添加密钥

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

它成功覆盖数组并添加键名称。但是当我尝试使用Object spread operator做同样的事情时。

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

它成功编译时没有错误,但同时没有将键designation映射到我的成员数组上。

这是正确的方法,还是我遗漏了一些东西,这只是一个有关Typescript对象传播操作的问题。

1 个答案:

答案 0 :(得分:1)

在第一个示例中,您将修改对象,在第二个示例中,您将创建一个新对象,该对象将具有原始成员和新指定属性的值。您需要使用由map创建的新对象数组并使用:

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