TypeScript 面试题
目录

请解释 TypeScript 中的条件类型 (Conditional Types) 的概念和用法。如何使用 extends 关键字和三元表达式定义条件类型?

· 约 3 分钟读完 · 第 53 / 256 章

推荐答案

在这个例子中,ConditionalType 是一个条件类型,它根据传入的类型 T 是否继承自 string 类型来决定返回的类型。如果 T 是 string 类型,则返回 "string",否则返回 "not string"。

本题详细解读

条件类型的概念

条件类型(Conditional Types)是 TypeScript 中的一种高级类型,它允许我们根据某个条件来选择不同的类型。条件类型的语法类似于 JavaScript 中的三元表达式,使用 extends 关键字来判断一个类型是否继承自另一个类型。

使用 extends 关键字和三元表达式定义条件类型

条件类型的基本语法如下:

  • T 是待检查的类型。
  • U 是目标类型。
  • X 是当 T 继承自 U 时返回的类型。
  • Y 是当 T 不继承自 U 时返回的类型。

示例 1: 基本条件类型

在这个例子中,IsString 是一个条件类型,它检查 T 是否是 string 类型。如果是,返回 true,否则返回 false。

示例 2: 嵌套条件类型

条件类型可以嵌套使用,以实现更复杂的类型判断。

在这个例子中,TypeName 是一个嵌套的条件类型,它根据 T 的类型返回相应的字符串。

示例 3: 分布式条件类型

当条件类型作用于联合类型时,TypeScript 会自动将条件类型应用到联合类型的每个成员上,这种特性称为分布式条件类型。

在这个例子中,ToArray 是一个分布式条件类型,它将联合类型 string | number 转换为 string[] | number[]。

总结

条件类型是 TypeScript 中非常强大的工具,它允许我们根据类型之间的关系来选择不同的类型。通过 extends 关键字和三元表达式,我们可以定义复杂的类型逻辑,从而编写出更加灵活和可维护的类型定义。