TypeScript中的Omit和Pick

170 篇文章 3 订阅
9 篇文章 0 订阅

最近面试中被问到了TypeScript中的Omit和Pick。第一时间就是尬住了,因为在工作里很少使用了TS,基本都是在写类型。这俩关键词,有点不面熟。面试结束后也是了解了一下,挺简单的两个类型工具。

TypeScript 中,OmitPick 是两个常用的类型工具,用于从现有类型中创建新类型,以便更精确地描述我们需要的数据结构。

Omit

Omit 类型工具允许我们从一个类型中剔除指定的属性,生成一个新的类型。其语法如下

type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;

这里的参数解释:

  • T:原始类型,从这个类型中我们要剔除属性。
  • K:属性名或属性名组成的联合类型,表示要从 T 中移除的属性。

举个例子,假设有一个 Person 类型:

type Person = {
    name: string;
    age: number;
    address: string;
};

如果我们想创建一个不包含 address 属性的新类型 PersonWithoutAddress,可以使用 Omit

type PersonWithoutAddress = Omit<Person, 'address'>;

这样 PersonWithoutAddress 类型就只包含 nameage 两个属性了。

等价于:

type PersonWithoutAddress = {
    name: string;
    age: number;
};

Pick

Pick 类型工具与 Omit 正好相反,它允许我们从一个类型中选取指定的属性,生成一个新的类型。其语法如下:

type Pick<T, K extends keyof T> = {
    [P in K]: T[P];
};

这里的参数解释:

  • T:原始类型,从这个类型中我们要挑选属性。
  • K:属性名或属性名组成的联合类型,表示要从 T 中选取的属性。

继续以上面的 Person 类型为例,如果我们想创建一个只包含 nameage 属性的新类型 PersonNameAndAge,可以使用 Pick

type PersonNameAndAge = Pick<Person, 'name' | 'age'>;

这样 PersonNameAndAge 类型就只包含 nameage 两个属性了。

等价于:


type PersonNameAndAge = {
    name: string;
    age: number;
}

总结

  • Omit 用于从一个类型中剔除指定属性,生成一个新类型。
  • Pick 用于从一个类型中选择指定属性,生成一个新类型。

这两个类型工具在 TypeScript 中非常有用,可以帮助我们更精确地定义和操作类型,使得代码更具表现力和安全性,也能达到一定的复用性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CreatorRay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值