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](