Pick和Extract的区别示例

在 TypeScript 中,PickExtract 是两种不同的类型操作工具。它们分别用于从一个已有的类型中选择或提取部分属性和从联合类型中提取符合条件的类型。

Pick 类型

Pick<T, K> 用于从类型 T 中选取指定的键 K 所对应的属性,创建一个新的类型。

示例:

interface Person {
  name: string;
  age: number;
  address: string;
}

// 使用 Pick 从 Person 中提取 name 和 age 属性创建新的类型
type BasicInfo = Pick<Person, 'name' | 'age'>;

const person: BasicInfo = {
  name: 'Alice',
  age: 30,
};

// 不允许包含未在 Pick 中声明的属性(如 address)
// person.address = '123 Main St.'; // 这行代码会报错,因为 address 在 BasicInfo 中不存在

Extract 类型

Extract<T, U> 用于从联合类型 T 中提取出与类型 U 相匹配的部分,形成一个新的联合类型。

示例:

type Color = 'red' | 'green' | 'blue' | 'yellow';
type PrimaryColors = 'red' | 'blue';

// 使用 Extract 提取 Color 联合类型中属于 PrimaryColors 的颜色
type PrimaryColorType = Extract<Color, PrimaryColors>;

let color: PrimaryColorType = 'red'; // 正确
color = 'green'; // 错误,'green' 不是 PrimaryColors 中的成员

总结来说:

  • Pick 用来从对象类型中选择子集属性。
  • Extract 用来从联合类型中选择符合特定条件的类型成员。
posted @ 2024-03-04 15:34  龙陌  阅读(153)  评论(0)    收藏  举报