最近面试中被问到了TypeScript中的Omit和Pick。第一时间就是尬住了,因为在工作里很少使用了TS,基本都是在写类型。这俩关键词,有点不面熟。面试结束后也是了解了一下,挺简单的两个类型工具。
在 TypeScript
中,Omit
和 Pick
是两个常用的类型工具,用于从现有类型中创建新类型,以便更精确地描述我们需要的数据结构。
Omit
类型工具允许我们从一个类型中剔除指定的属性,生成一个新的类型。其语法如下
tstype Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
这里的参数解释:
举个例子,假设有一个 Person
类型:
tstype Person = {
name: string;
age: number;
address: string;
};
如果我们想创建一个不包含 address
属性的新类型 PersonWithoutAddress
,可以使用 Omit
:
tstype PersonWithoutAddress = Omit<Person, 'address'>;
这样 PersonWithoutAddress
类型就只包含 name
和 age
两个属性了。
等价于:
tstype PersonWithoutAddress = {
name: string;
age: number;
};
Pick
类型工具与 Omit
正好相反,它允许我们从一个类型中选取指定的属性,生成一个新的类型。其语法如下:
tstype Pick<T, K extends keyof T> = {
[P in K]: T[P];
};
这里的参数解释:
继续以上面的 Person
类型为例,如果我们想创建一个只包含 name
和 age
属性的新类型 PersonNameAndAge
,可以使用 Pick
:
tstype PersonNameAndAge = Pick<Person, 'name' | 'age'>;
这样 PersonNameAndAge
类型就只包含 name
和 age
两个属性了。
等价于:
ts
type PersonNameAndAge = {
name: string;
age: number;
}
Omit
用于从一个类型中剔除指定属性,生成一个新类型。Pick
用于从一个类型中选择指定属性,生成一个新类型。这两个类型工具在 TypeScript
中非常有用,可以帮助我们更精确地定义和操作类型,使得代码更具表现力和安全性,也能达到一定的复用性。
本文作者:CreatorRay
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!