发布于 2026-01-06 3 阅读
0

TypeScript 实用类型:选择和省略

TypeScript 实用类型:选择和省略

在上一篇文章中,我们首先了解了TypeScript 的实用类型:Partial 和 Required本文
将深入探讨Pick和。Omit

它们都用于创建一个新类型,该新类型仅包含原始类型的一组选项。

然而,它们的工作原理略有不同。让我们来看看它们之间主要的区别。

  • Pick只拿你想要的物品。
  • Omit会选择所有你未明确定义的项目进行省略。

所以两者的结果非常相似,具体选择哪一个取决于你的需求。

TypeScript Pick 实用类型

我将继续沿用之前的例子:用户界面。

interface User {
  id?: number;
  firstname: string;
  lastname?: string;
  age: number;
  telephone?: number;
  twitter?: string;
}
Enter fullscreen mode Exit fullscreen mode

现在假设我们想要一个单独的类型,它只能传递全名,所以不需要任何其他字段?

我们可以定义一种新类型,并在其中定义我们想要使用的字段。

type UserFullname = Pick<User, 'firstname' | 'lastname'>;

const userName: UserFullname = {
  firstname: 'Chris',
  lastname: 'Bongers',
};
Enter fullscreen mode Exit fullscreen mode

现在我们使用用户名变量来确保只设置这两个字段。
您可能已经注意到分隔符了|。它用作分隔符,会同时选中这两个字段。

当您使用不同的返回类型时,经常需要这种类型操作,例如,您可能需要排除某些特定字段。
此外,您还可以考虑使用子组件,这些子组件仅从更大的对象中获取特定字段。

TypeScript Omit 工具类型

与类型类似Pick,该属性也Omit可用于修改现有接口或类型。
但是,该属性的工作方式正好相反。

它会移除你定义的字段。我们希望在创建用户时从用户对象中
移除该字段。id

type UserPost = Omit<User, 'id'>;

const updateUser: UserPost = {
  firstname: 'Chris',
  lastname: 'Bongers',
  age: 32,
};
Enter fullscreen mode Exit fullscreen mode

尽管 ourid原本是一个条件字段,但现在它已完全从类型中移除,所以我们甚至无法将其传递下去!

TypeScript 省略实用类型

以上就是它们各自的应用场景,Pick我们Omit将在下一篇文章中详细介绍。当它们结合使用时,会发挥多么强大的作用。

感谢阅读,让我们保持联系!

感谢您阅读我的博客。欢迎订阅我的电子邮件简讯,也可以在FacebookTwitter上关注我。

文章来源:https://dev.to/dailydevtips1/typescript-utility-types-pick-and-omit-135e