当前位置:实例文章 » HTML/CSS实例» [文章]TypeScript 学习笔记(七):条件类型

TypeScript 学习笔记(七):条件类型

发布人:shili8 发布时间:2025-01-21 14:39 阅读次数:0

**TypeScript 学习笔记 (七):条件类型**

在前面的几篇文章中,我们已经学习了 TypeScript 的基本语法、类、接口、泛型等概念。今天我们要讨论的主题是条件类型(Conditional Types)。

###什么是条件类型?

条件类型是一种特殊的类型,用于根据某些条件来决定返回的类型。它可以让我们在编写代码时更加灵活和高效。

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

typescripttype ConditionalType = T extends U ? Type1 : Type2;

其中 `T` 和 `U` 是两个类型参数,`?` 表示条件判断,`:` 分别表示两种可能的返回类型。

###例子:简单的条件类型让我们来看一个简单的例子:
typescripttype IsString<T> = T extends string ? 'yes' : 'no';

console.log(IsString<string>) // yesconsole.log(IsString<number>) // no

在这个例子中,我们定义了一个条件类型 `IsString`,它判断传入的类型是否是字符串。如果是,则返回 `'yes'`,否则返回 `'no'`。

###例子:使用条件类型来创建类型别名下面是一个更复杂的例子:
typescripttype Person = { name: string; age: number };
type Animal = { name: string; species: string };

type IsPerson = T extends Person ? 'yes' : 'no';

console.log(IsPerson) // yesconsole.log(IsPerson) // no

在这个例子中,我们定义了一个条件类型 `IsPerson`,它判断传入的类型是否是 `Person`。如果是,则返回 `'yes'`,否则返回 `'no'`。

###例子:使用条件类型来创建联合类型下面是一个更复杂的例子:
typescripttype Person = { name: string; age: number };
type Animal = { name: string; species: string };

type IsPersonOrAnimal = T extends Person ? 'person' : T extends Animal ? 'animal' : never;

console.log(IsPersonOrAnimal) // personconsole.log(IsPersonOrAnimal) // animalconsole.log(IsPersonOrAnimal<{ foo: string }>) // never

在这个例子中,我们定义了一个条件类型 `IsPersonOrAnimal`,它判断传入的类型是否是 `Person` 或 `Animal`。如果是,则返回 `'person'` 或 `'animal'`,否则返回 `never`。

### 总结本篇文章我们学习了 TypeScript 的条件类型(Conditional Types)。通过几个例子,我们可以看到如何使用条件类型来创建类型别名、联合类型等复杂的类型结构。条件类型是 TypeScript 中一个非常强大的工具,可以让我们在编写代码时更加灵活和高效。

### 参考资料* [TypeScript Handbook]( />* [TypeScript Conditional Types](

其他信息

其他资源

Top