条件类型允许基于条件动态创建类型,分为两种:T extends U ? X : Y,检查 T 是否可以赋值给 U,可赋值返回 X,否则返回 Y。T extends U = true ? X : Y,检查 T 是否严格等于 U,相等返回 X,否则返回 Y。条件类型用于类型守卫、类型转换和创建通用函数,但仅适用于类型变量。

TypeScript 条件类型
TypeScript 中的条件类型是一种高级特性,允许开发者基于类型谓词动态创建新的类型。通过使用条件类型,可以创建复杂的类型,这些类型会根据特定的条件而改变。
有哪些条件类型?
TypeScript 中有以下两种主要的条件类型:
T extends U ? X : YT extends U = true ? X : Y
条件类型如何工作?
T extends U ? X : Y
- 检查类型变量
T是否可以赋值给类型U。 - 如果可以,则返回类型
X。 - 如果不可以,则返回类型
Y。
T extends U = true ? X : Y
技术上面应用了三层结构,AJAX框架,URL重写等基础的开发。并用了动软的代码生成器及数据访问类,加进了一些自己用到的小功能,算是整理了一些自己的操作类。系统设计上面说不出用什么模式,大体设计是后台分两级分类,设置好一级之后,再设置二级并选择栏目类型,如内容,列表,上传文件,新窗口等。这样就可以生成无限多个二级分类,也就是网站栏目。对于扩展性来说,如果有新的需求可以直接加一个栏目类型并新加功能操作
- 检查类型变量
T是否可以严格等于类型U。 - 如果相等,则返回类型
X。 - 如果不相等,则返回类型
Y。
示例
以下是一些条件类型的示例:
type IsString= T extends string ? true : false; // 检查 T 是否是 string 类型 type IsArray = T extends Array ? true : false; // 检查 T 是否是 Array 类型 type NotNull = T extends null | undefined ? never : T; // 从 T 中排除 null 和 undefined
用法
条件类型可以用于各种场景,例如:
- 类型守卫:检查一个值是否属于特定类型。
- 类型转换:将一个类型转换为另一个类型。
- 创建通用函数:编写适用于各种类型的函数。
注意
- 条件类型只能用于类型变量,不能用于值。
- 条件类型的结果类型必须是 TypeScript 中的合法类型。









