Typescript中Omit和Pick的区别
Omit<T, K>
和 Pick<T, K>
他们的区别在于它们的功能和作用对象:
-
Omit<T, K>
:用于从类型T
中排除属性K
,生成一个新的类型,即返回类型中去掉指定属性的结果。这个工具适用于当我们需要创建一个新类型,该类型与原类型相似,但排除了特定属性的情况。 -
Pick<T, K>
:用于从类型T
中选择属性K
,生成一个新的类型,即只包含指定属性的结果。这个工具适用于当我们需要从一个类型中提取出特定属性,组成一个新的类型的情况。
换句话说,Omit<T, K>
是在原类型的基础上排除指定的属性,而 Pick<T, K>
是在原类型的基础上只选择指定的属性。这两个工具的使用场景不同,但都是为了更灵活地操作 TypeScript 中的类型而设计的。
例子
当我们有一个 Person
类型如下:
type Person = { name: string; age: number; gender: 'male' | 'female'; };
我们可以使用 Omit<T, K>
和 Pick<T, K>
来生成新的类型。
例子 1:使用 Omit<T, K>
排除属性
type PersonWithoutAge = Omit<Person, 'age'>; // 等同于 type PersonWithoutAge = { name: string; gender: 'male' | 'female'; } const person: PersonWithoutAge = { name: 'Alice', gender: 'female', };
在上面的例子中,我们使用 Omit<Person, 'age'>
生成了一个新的类型 PersonWithoutAge
,它排除了 Person
类型中的 age
属性。在创建 person
对象时,我们只需要提供 name
和 gender
属性,而不需要提供 age
属性。
例子 2:使用 Pick<T, K>
选择属性
type PersonWithNameAndGender = Pick<Person, 'name' | 'gender'>; // 等同于 type PersonWithNameAndGender = { name: string; gender: 'male' | 'female'; } const person: PersonWithNameAndGender = { name: 'Bob', gender: 'male', };
在上面的例子中,我们使用 Pick<Person, 'name' | 'gender'>
生成了一个新的类型 PersonWithNameAndGender
,它只包含了 Person
类型中的 name
和 gender
属性。在创建 person
对象时,我们只需要提供 name
和 gender
属性,而不需要提供 age
属性。
通过这两个例子,你可以看到 Omit<T, K>
和 Pick<T, K>
的不同用法和效果。Omit
用于排除属性,Pick
用于选择属性。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律