我在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对象传播操作的问题。
答案 0 :(得分:1)
在第一个示例中,您将修改对象,在第二个示例中,您将创建一个新对象,该对象将具有原始成员和新指定属性的值。您需要使用由map
创建的新对象数组并使用:
var memberWithDesignation = members.map(member => ({
...member,
designation: 'Singer'
}));
console.log(memberWithDesignation[0].designation); // Will output Singer