我们将在本文中深入探讨 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。我们将更详细地了解它们组合时的强大程度。