返回

TypeScript进阶修炼,条件类型重组助你轻松搞定!

前端

在大多数 TypeScript 开发者的心中,TypeScript 的运用还停留在初级水平。不信?那就来尝试一下 TypeScript 每周挑战吧!第二期挑战就将 TypeScript 中的 “条件类型重组” 特性纳入了考验范围。

条件类型重组的神奇之处

在 TypeScript 中,条件类型重组是一种强大的工具,它允许你根据类型条件动态地修改类型。这在需要创建复杂类型或处理复杂条件时非常有用。

条件类型重组的语法如下:

type NewType = Type extends Condition ? TrueType : FalseType;

其中,

  • Type 是要检查的类型。
  • Condition 是要检查的条件。
  • TrueType 是如果条件为真时要分配给 NewType 的类型。
  • FalseType 是如果条件为假时要分配给 NewType 的类型。

例如,以下代码使用条件类型重组来创建 NullableType 类型,它是一个可以是 stringnull 的类型:

type NullableType = string | null;

以下代码使用条件类型重组来创建一个 NonNullType 类型,它是一个不能为 nullstring 类型:

type NonNullType = string extends null ? never : string;

条件类型重组的应用场景

条件类型重组有许多应用场景,包括:

  • 创建复杂类型
  • 处理复杂条件
  • 实现泛型编程
  • 提高代码的可维护性

以下是一些条件类型重组的具体应用示例:

  • 使用条件类型重组来创建 PartialType 类型,它是一个只包含 RequiredType 类型中部分属性的类型:
type RequiredType = {
  name: string;
  age: number;
  city: string;
};

type PartialType = {
  [P in keyof RequiredType]?: RequiredType[P];
};
  • 使用条件类型重组来创建一个 OmitType 类型,它是一个不包含 OmittedKeys 类型中指定属性的 RequiredType 类型:
type OmittedKeys = "age" | "city";

type OmitType = {
  [P in keyof RequiredType]: P extends OmittedKeys ? never : RequiredType[P];
};
  • 使用条件类型重组来创建一个 PickType 类型,它是一个只包含 PickedKeys 类型中指定属性的 RequiredType 类型:
type PickedKeys = "name" | "city";

type PickType = {
  [P in keyof RequiredType]: P extends PickedKeys ? RequiredType[P] : never;
};

掌握条件类型重组,进阶之路更宽广

条件类型重组是 TypeScript 中一个非常强大的工具,它可以帮助你创建复杂类型、处理复杂条件、实现泛型编程和提高代码的可维护性。如果你想成为一名高级 TypeScript 开发者,那么掌握条件类型重组是必不可少的。

TypeScript 每周挑战是一个非常好的学习平台,它可以帮助你巩固 TypeScript 的基础知识,并学习一些高级的 TypeScript 特性。如果你想挑战自己,提高自己的 TypeScript 技能,那么我强烈建议你参加 TypeScript 每周挑战。