TypeScript的省略类型是如何工作的

212 阅读2分钟

TypeScript的省略类型是如何工作的

TypeScript提供了许多实用类型,用于解决在Javascript中使用类型所产生的特定问题。TypeScript中使用的一个非常有用的工具类型是Omit类型,它可以让我们定制一个已经存在的类型。让我们来看看它是如何工作的。

自定义类型

本文假设你知道如何在TypeScript中创建自定义类型。如果你不知道,请在这里阅读我关于自定义类型的文章。

TypeScript省略类型

在TypeScript中,我们经常创建自定义类型,让我们确保数据符合特定格式。例如,如果我们想创建一个自定义用户类型,它有四个字段--firstName,lastName,agelastActive ,我们可以这样做。

TypeScript

type User = {
  firstName: string;
  lastName: string;
  age: number;
  lastActive: number;
}

可悲的是,编码并不总是简单明了的。有时,我们想再次使用我们的类型,但从它那里删除某些元素,从而创建一个新的类型。要做到这一点,我们可以使用Omit<Type, Omissions> 。Omit接受两个值。

  • 以我们的新类型为基础的类型
  • 一个联合类型,列出要删除的所有字段。例如,如果我们想采取我们的用户类型,并删除年龄和lastActive ,我们可以做以下工作。

TypeScript

type User = {
  firstName: string;
  lastName: string;
  age: number;
  lastActive: number;
}

type UserNameOnly = Omit<User, "age" | "lastActive">

现在我们有两个类型--User ,这是我们的核心用户类型,和UserNameOnly ,这是我们的用户类型减去agelastActive 。同样地,如果我们只想删除age ,这就足够了。

TypeScript

type UserNameAndActive = Omit<User, "age">

现在我们可以在代码的任何地方使用我们的新类型。这使我们可以灵活地使用一个类型,并在特定情况下对其进行转换。下面是一个使用我们两个新类型的例子。

TypeScript

type User = {
  firstName: string;
  lastName: string;
  age: number;
  lastActive: number;
}

type UserNameOnly = Omit<User, "age" | "lastActive">
type UserNameAndActive = Omit<User, "age">

const userByName:UserNameOnly = {
    firstName: "John",
    lastName: "Doe",
};
const userWithoutAge:UserNameAndActive = {
    firstName: "John",
    lastName: "Doe",
    lastActive: -16302124725
}

TypeScript

经DZone MVB的Johnny Simpson许可,发表在DZone。点击这里查看原文。