首页 > 解决方案 > 三重点运算符和 & 运算符对类型的解释

问题描述

有人可以解释以下代码片段的含义吗?

const data: admin.auth.UserRecord & Partial<User> = {
   ...(await admin.auth().getUser(uid))
};

标签: typescript

解决方案


&创建一个交集类型。

交集类型结合了多种类型的属性。TypeScript 文档说,“这种类型的对象将具有所有 [the] 类型的所有成员。”

type UserRecord = {
  p1: string;
  p2: string;
};

type User = {
  p3: string;
  p4: string;
};

type UserRecordAndPartialUser = UserRecord & Partial<User>;

const userRecordAndPartialUser = {
  p1: "value1",
  p2: "value2",
  p3: "value3",
  p4: "value4"
};

浅层将...内部对象克隆到外部对象。

MDN 文档说,“将自己的可枚举属性从提供的对象复制到新对象上。”

const anotherUserRecordAndPartialUser = {
  ...userRecordAndPartialUser
};

console.log(anotherUserRecordAndPartialUser);
// {
//   p1: "value1",
//   p2: "value2",
//   p3: "value3",
//   p4: "value4"
// };

推荐阅读