TypeScript 实用程序类型:选择和省略

2022-04-13 17:26:21 浏览数 (1)

我们将在本文中深入探讨 PickOmit

它们都用于创建一个新类型,只有原始类型的一组选项。

但是,它们的工作方式略有不同。我们来看看高层的区别。

Pick只拿你定义你想要的物品 Omit将选择你未定义的所有项目以省略 所以两者的结果非常相似,这取决于你的需要你可能喜欢哪一个。

TypeScript Pick 实用程序类型 我使用我之前使用的相同示例:用户界面。

代码语言:javascript复制
interface User {
  id?: number;
  firstname: string;
  lastname?: string;
  age: number;
  telephone?: number;
  twitter?: string;
}

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

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

代码语言:javascript复制
type UserFullname = Pick<User, 'firstname' | 'lastname'>;

const userName: UserFullname = {
  firstname: 'Chris',
  lastname: 'Bongers',
};

我们的用户名变量现在用于确保只设置这两个字段。 你可能已经发现了分隔符|。它用作分隔符,它将选择两个字段。

在使用不同的返回类型时,你可能经常需要这种类型的操作,你可能希望排除特定的字段。但是你也可以考虑仅从更大对象中获取特定字段的子组件。

TypeScript Omit 实用程序类型与Pick类型一样,Omit可用于修改现有接口或类型。然而,这个工作反过来。

它将删除你定义的字段。当我们想创建一个用户时,我们想从我们的用户对象中删除该字段id。

代码语言:javascript复制
type UserPost = Omit<User, 'id'>;

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

即使 ourid已经是一个条件字段,它现在已经完全从类型中删除了,所以我们甚至不能传递它!

这就是下一篇文章的用例Pick和用例Omit。我们将更详细地了解它们组合时的强大程度。

0 人点赞