
展开运算符
TIP
在 JavaScript 和 TypeScript 中,...(展开运算符)是一个非常有用的操作符,它允许你将一个可迭代对象(如数组或对象)的元素展开到另一个位置,如数组字面量、函数调用的参数列表或对象字面量中。
在你的例子中,...user 是在对象字面量的上下文中使用的,这意味着它会将 user 对象的所有可枚举自有属性展开为独立的键值对。换句话说,...user 将 user 对象的属性解构并直接插入到新对象中,这在复制或合并对象时特别有用,同时可以方便地添加或修改某些属性,如你代码中给 email 添加域名后缀的例子。
具体到这段代码:
js
return {
...user,
email: `${user.email}@example.com`,
}
这行代码创建了一个新对象,首先通过 ...user 展开 user 对象的所有属性,然后单独设置了 email 属性,将其值更新为原 email 后加上 "@example.com"。这样,如果 user 对象有其他属性(比如 id 和 name),它们也会被保留在新对象中,而不仅仅是修改了 email。