TypeScript 的条件类型
文章类型:TypeScript
发布者:hp
发布时间:2025-03-17
1:定义:
条件类型是 TypeScript 中一种高级类型操作符,允许基于类型之间的逻辑关系动态推导或选择新的类型,类似与三元运算符
2:核心:
通过 extends 关键字判断类型关系,并根据结果返回不同的类型分支
3:语法:
T extends U ? X : Y
4:代码
type ResultType<T> = T extends string ? "String" : "NotString";
type A = ResultType<"hello">; // "String"
type B = ResultType<42>; // "NotString"
1:过滤类型:条件类型可以用来过滤一个联合类型的某些类型
type Filter<T, U> = T extends U ? never : T;
type Result = Filter<string | number | boolean, number>; // Result = string | boolean
2:检查类型:条件类型帮助我们在一些业务逻辑中根据类型选择不同的操作
type CheckType<T> = T extends string ? "string type" : "other type";
type Result1 = CheckType<string>; // "string type"
type Result2 = CheckType<number>; // "other type"
3:分布式条件类型:一个条件类型如果作为一个联合类型,会被分配到每个成员
type Example<T> = T extends string ? 'yes' : 'no';
type Result = Example<string | number>; // 'yes' | 'no'
4:内置条件类型:TypeScript 提供的基础类型
5:类型推断与infer关键字:提取局部类型
type ReturnType<T> = T extends (...args: any[]) => infer R ? R : never;
type FuncReturn = ReturnType<() => number>; // number
1:类型转换:根据输入类型动态调整输出类型
2:简化重载函数:通过条件类型替代多重函数重载,减少冗余代码
3:类型守卫:结合 infer 关键字提取嵌套类型
1:动态类型推导=>基于extends关系选择分支类型
2:联合类型分发=>自动遍历联合类型成员,独立处理并合并结果
3:类型提取=>结合infer提取嵌套类型