条件类型
探索条件类型如何根据条件动态调整类型,从而实现灵活且可复用的类型定义
条件类型 是 CoddyKit 上的免费 TypeScript Academy 课时。 这是第 3 节课,共 3 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 TypeScript Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 TypeScript Academy 课程共包含 3 节课。
条件类型简介
条件类型简介
TypeScript 中的条件类型允许您根据条件动态创建类型,使代码更加灵活且易于复用。
它们使用的语法类似于 JavaScript 的条件(ternary)运算符。

什么是条件类型
什么是条件类型
条件类型允许您定义依赖于另一种类型的类型。基本语法如下:
T extends U ? X : Y
这表示:如果 T 扩展了 U,则类型为 X,否则为 Y。
条件类型的基本示例
条件类型的基本示例
下面是一个简单的示例:
type IsString<T> = T extends string ? 'Yes' : 'No';
// Test cases
type A = IsString<string>; // 'Yes'
type B = IsString<number>; // 'No'使用条件类型处理函数重载
使用条件类型处理函数重载
条件类型可以动态确定返回类型,从而简化函数重载:
type ReturnType<T> = T extends (...args: any[]) => infer R ? R : never;
function getData(): string {
return 'Hello';
}
type DataType = ReturnType<typeof getData>; // string可分布条件类型
可分布条件类型
将条件类型应用于联合类型时,条件类型会分布到联合类型的每个成员上:
type ToArray<T> = T extends any ? T[] : never;
type A = ToArray<string | number>;
// A = string[] | number[]组合条件类型与映射类型
组合条件类型与映射类型
您可以将条件类型与映射类型组合起来,实现强大的类型转换:
type User = {
id: number;
name: string;
isAdmin?: boolean;
};
type MakeRequired<T> = {
[K in keyof T]-?: T[K] extends undefined ? never : T[K];
};
type RequiredUser = MakeRequired<User>;
// { id: number; name: string; isAdmin: never; }条件类型的常见应用场景
条件类型的常见应用场景
条件类型通常用于:
- 推断返回类型或参数。
- 转换联合类型和交叉类型。
- 创建类似
Exclude、Extract和NonNullable的工具类型。
练习任务
练习任务
创建一个条件类型,用于检查某种类型是否为数组;如果是,则返回其元素类型,否则返回该类型本身。
恭喜您!
恭喜您!
您已经学习了如何使用条件类型在 TypeScript 中创建动态且可复用的类型定义。练习这些概念,编写更强大、更灵活的 TypeScript 代码吧!

常见问题解答
「条件类型」课时是免费的吗?
是的 — 「条件类型」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 TypeScript Academy 课程的其余内容,请升级到 CoddyKit PRO。 TypeScript Academy 课程共包含 3 节课。
「条件类型」这节课中我会学到什么?
探索条件类型如何根据条件动态调整类型,从而实现灵活且可复用的类型定义 你通过在浏览器中直接运行的动手代码来练习 TypeScript Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 TypeScript Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 TypeScript Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 3 节。
「条件类型」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 TypeScript Academy 课中编写并运行代码吗?
能。每节 TypeScript Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。