《TypeScript编程入门》目录
这一页是全书的总入口。它不只列出章节标题,还给出三条可以照着走的阅读路径,以及每一节的定位说明。如果你不确定从哪开始,先读下面的「读者画像与前置知识」,再对照「学习路径」选一条;如果你已经有明确目标,可以直接跳到「分部分章节」按编号定位。
全书结构是:前置 3 篇 + 正文 18 章 54 节 + 附录 4 篇,共 61 篇。正文按学习曲线分为五个部分,每一部分解决一类问题。
如何使用本目录
这一页有三种用法,取决于你此刻的状态:
如果你刚拿到这本书,按顺序读「本书定位」「读者画像与前置知识」「学习路径」三节,用五分钟决定自己的入口章节。不要跳过这一步,选错入口比读得慢更浪费时间。
如果你已经读到一半,想查某一节在哪,直接看「分部分章节」里对应部分的表格。每一行都有一句话说明,可以帮你确认是不是你要找的那一节,避免点进去再退出来的反复。
如果你把这本书当手册用,主要会用到「前置与附录」和每一节末尾的小结。附录 A 到 D 分别覆盖语法、工具类型、生态资源与常见问题,是查阅频率最高的四篇。
本书定位
这是一本面向零基础读者的 TypeScript 系统教材。它的目标不是让你「听说过 TypeScript」,而是让你能够独立地用它设计类型、组织项目、并在团队协作中做出合理的类型决策。
它有三个刻意的取舍。第一,重原理而非重清单:讲清楚一个特性为什么存在、什么时候该用,比罗列它能写什么更重要。第二,示例可运行:书中代码尽量保持为可直接复制运行的最小片段,而不是伪代码。第三,不回避进阶内容但也不炫技:映射类型、条件类型这些能力会认真讲,但会反复提醒你把可维护性放在巧妙性之前。
如果你需要的是一份「30 分钟速成 TypeScript」的教程,这本书可能过于啰嗦;如果你希望一次把基础打牢、之后不必反复回炉,那它的节奏是合适的。
读者画像与前置知识
不同类型的读者,起点和建议路径差别很大。可以先在下面找到最接近自己的那一类。
完全新手(几乎没写过代码):建议按顺序从第 1 章读到第 18 章,不要跳章。类型系统是层层叠加的——不理解基础注解就读不懂泛型,不理解泛型就读不懂条件类型。同时请先补一点 JavaScript 基础:变量声明、函数、数组方法、对象解构、Promise 与 async/await。本书假定你能读懂基本的 JS 代码,不会从头讲解循环和条件语句。
有 JavaScript 基础(1 年以上):这是本书最主要的读者群。建议快速扫过第 1 至第 4 章建立心智模型,把主要精力放在第 5 至第 10 章——对象建模、联合类型、泛型与类型变换,这些才是把 JS 思维切换成 TS 思维的关键。第 13 章的「运行时盲区」和第 15 章的测试部分不要跳,它们解释了很多「类型写对了但线上还是出错」的困惑。
有其他静态类型语言基础(Java/C#/Rust/Go 等):可以跳过第 3 章的类型基础,直接从第 4 章读起,但要特别留意三处差异——结构化类型系统(看形状不看名字)、类型擦除(运行时无类型信息)、以及 any 这个逃生舱的存在。第 5 章和第 13 章对你来说信息密度最高。
学习路径
下表给出三条典型路径。三条路径不互斥,可以先速成再补齐。
| 路径 | 适合谁 | 读哪些 | 预计用时 |
|---|---|---|---|
| 完整通读 | 零基础 / 想重建知识结构 | 第 1 章至第 18 章顺序读,每节动手写代码 | 8–10 周(每天 1 小时) |
| 两周速成 | 有 JS 基础、急于上手业务 | 3.1、4.1、5.1、5.2、7.1、7.2、11.1、13.1 共 8 节 | 2 周 |
| 参考手册 | 已会用、需要随时查 | 按目录定位章节,优先用每节「本节目标」与「小结」 | 按需 |
两条补充建议:无论选哪条路径,都请完整跑通第 2 章的示例,把环境和 tsconfig.json 配置正确;如果时间允许,第 7 章的判别联合值得反复练习,它是全书性价比最高的一节内容。
一份可执行的八周计划
上面三条路径偏原则。如果你希望有一份可以直接照着打勾的安排,下面这份八周计划可以作为起点(按每天投入一小时估算),它对应的是「完整通读」路径。
| 周次 | 主要任务 | 完成标志 |
|---|---|---|
| 第 1 周 | 第 1–3 章:语言定位、环境搭建、基本类型 | 能独立建好工程并写出带类型的小程序 |
| 第 2 周 | 第 4–5 章:函数签名与对象建模 | 能为一段业务逻辑设计出 interface |
| 第 3 周 | 第 6–7 章:类、联合类型与判别联合 | 能用判别联合替换掉一串布尔标志位 |
| 第 4 周 | 第 8–9 章:泛型约束、映射类型与条件类型 | 能读懂工具类型源码,并写出简单的类型工具 |
| 第 5 周 | 第 10–11 章:内置工具类型、模块解析 | 能在自己的项目里组织模块并处理路径解析 |
| 第 6 周 | 第 12–13 章:声明文件与运行时校验 | 能为无类型依赖写声明,并在边界加上校验 |
| 第 7 周 | 第 14–16 章:错误处理、异步、测试与构建 | 能把类型检查接进 CI 流水线 |
| 第 8 周 | 第 17–18 章:全栈契约、迁移与收尾 | 能规划一个老项目的渐进式迁移方案 |
这份计划的关键不在于准时,而在于每周都有产出。类型知识如果不落到代码上,遗忘速度会非常快。如果某一周的任务没有完成,宁可延长这一周,也不要为了赶进度跳过动手环节。
每周结束时,可以用三个问题自查:这一周学到的类型写法,我在自己的代码里用过吗?遇到报错时,我是自己读懂的还是靠搜索绕过去的?如果现在合上书,我能向别人讲清楚这一周最核心的那个概念吗?三个问题里只要有一个答不上来,就值得回头补一补再往下走。
如果你的时间只有一半,可以把第 5 周和第 7 周压缩合并,先跳过构建工具与 Monorepo 的细节——它们更接近「按需查阅」的内容,等到项目里真的用上再回来补即可。
需要说明的是,这份计划的顺序刻意把「类型建模」(第 5–7 章)放在很早的位置,而不是按章节编号一路平推。原因是这一部分决定了你后续所有代码的写法:先建立起「用类型描述业务」的习惯,后面学到的泛型与工具类型才有地方落地;反过来先学一堆类型技巧、却不知道用在哪,很快就会忘。
各部分之间的依赖关系
五个部分不是平行关系,而是层层依赖的。下面这张表说明每一部分依赖什么、又被谁依赖,方便你判断能否跳过某一部分:
| 部分 | 依赖 | 被依赖 | 能否跳过 |
|---|---|---|---|
| 第一部分 基础与起步 | 无 | 全部后续部分 | 有 JS 基础者可速读 |
| 第二部分 类型建模 | 第一部分 | 第三、四、五部分 | 不建议跳过 |
| 第三部分 类型系统进阶 | 第二部分 | 第四、五部分(部分章节) | 可延后,但读库源码前需补 |
| 第四部分 运行时与工程实践 | 第一部分 | 第五部分 | 按工作内容选读 |
| 第五部分 全栈实战 | 全部前四部分 | 无 | 可在有项目时再读 |
一个实用的判断原则是:类型建模(第二部分)是绕不过去的地基,其余部分都可以根据你的实际工作来取舍。如果你的项目里已经有人在写泛型工具类型,第三部分值得尽早补上;如果你只负责写业务组件,第四部分的前半(模块、声明文件)比后半(构建、Monorepo)更急。
分部分章节
下面按五个部分列出全部 18 章 54 节,每一行给出编号、标题与一句话说明。
表格里的编号规则是「章.节」,例如 7.2 表示第 7 章第 2 节。点击标题即可进入该节正文。每个部分开头都有一段导读,说明这一部分在整个学习曲线中的位置;如果你只想知道某节讲什么,直接看表格第三列的说明即可。
需要提醒的是,正文的每一节都遵循「本节目标 → 正文小节 → 小结 → 衔接下一节」的四段式结构,所以即使你从中间某节切入,也能通过开头的目标说明快速建立上下文,不必担心前情缺失。
第一部分:基础与起步(第 1–4 章)
这一部分解决「是什么、怎么装、怎么写」三个前置问题,读完能独立写出并运行带类型的程序。
节奏上,这一部分刻意放慢了。第 1 章花了不少篇幅讲历史与定位,看起来与写代码无关,但它决定了你后面怎么看类型擦除、怎么理解编译期与运行期的分工。如果时间紧张,第 1 章的 1.1 和 1.2 至少不要跳。第 2 章的环境配置建议一次做对,后面每一节的示例都依赖它。第 3、4 章是语法密度最高的两章,可以边读边查,不必强求记住所有细节。
| 编号 | 章节 | 说明 |
|---|---|---|
| 1.1 | TypeScript 的诞生与设计目标 | 从 JavaScript 的规模化痛点出发,理解这门语言为何被创造 |
| 1.2 | 与 JavaScript 的关系(超集·类型擦除) | 厘清超集关系与类型擦除,建立编译期与运行期的分工认知 |
| 1.3 | 适用场景与生态版图 | 看清哪些项目适合用 TypeScript,以及它在生态中的位置 |
| 2.1 | 安装 Node.js、TS 与编辑器配置 | 搭好本机环境,让编辑器具备类型提示与报错能力 |
| 2.2 | tsc 与 tsconfig.json 初探 | 掌握编译命令与核心配置项的含义与作用 |
| 2.3 | 第一个项目:从零到运行 | 从空目录到可运行程序,走通完整的开发流程 |
| 3.1 | 原始类型与类型注解 | 掌握基本类型与注解写法,理解类型推断何时接管 |
| 3.2 | 数组、元组与枚举 | 描述有序集合、固定长度结构与有限取值集合 |
| 3.3 | any·unknown·never·void 与类型断言 | 分清几个特殊类型的适用边界,以及断言的代价 |
| 4.1 | 签名、可选参数与默认值 | 为函数建立清晰、可被工具校验的输入输出契约 |
| 4.2 | 重载、this 类型与箭头函数 | 处理多形态函数与 this 指向带来的类型问题 |
| 4.3 | 泛型函数入门 | 用类型参数写出不丢失信息的多态函数 |
第二部分:类型建模(第 5–7 章)
这一部分是全书的核心。它教你如何用类型描述业务里的对象、状态与分支,是从「加注解的 JS」迈向「类型驱动设计」的分水岭。
| 编号 | 章节 | 说明 |
|---|---|---|
| 5.1 | interface 定义对象结构 | 用接口描述对象的形状、可选性与只读约束 |
| 5.2 | type 别名、联合与交叉 | 掌握类型别名的能力,以及联合与交叉的组合方式 |
| 5.3 | 结构化类型与两者取舍 | 理解结构类型系统,并给出 interface 与 type 的选型标准 |
| 6.1 | 类、访问修饰符与参数属性 | 用类组织行为,并用修饰符控制可见性 |
| 6.2 | 继承、抽象类与多态 | 建立继承层次,并用类型表达多态行为 |
| 6.3 | 接口实现与 mixin | 用 implements 约束契约,用 mixin 组合可复用行为 |
| 7.1 | 联合类型与字面量类型 | 用字面量集合表达有限取值,替代松散的字符串约定 |
| 7.2 | 判别联合(Discriminated Unions) | 用一个判别字段建模状态与变体,让非法状态无法表达 |
| 7.3 | 类型守卫与控制流分析 | 让编译器跟随你的分支判断逐步收窄类型 |
第三部分:类型系统进阶(第 8–10 章)
这一部分把类型当作一门小语言来写:泛型、映射类型、条件类型。它们是读懂流行库类型定义的基础,也是把重复类型代码收敛成工具的关键。
| 编号 | 章节 | 说明 |
|---|---|---|
| 8.1 | 泛型约束(extends) | 用约束限定类型参数的能力范围,兼顾灵活与安全 |
| 8.2 | 泛型默认值与类型推断 | 让泛型既有合理的默认值,又不妨碍自动推断 |
| 8.3 | 泛型在接口·类·函数中的协同 | 在三类载体之间统一使用泛型,避免类型信息丢失 |
| 9.1 | keyof·typeof 与索引访问类型 | 从既有值反推类型,并安全地按索引访问成员 |
| 9.2 | 映射类型与键重映射(as) | 批量变换对象类型,并用 as 重命名或过滤键 |
| 9.3 | 条件类型与 infer | 用条件类型做类型层面的分支,并用 infer 提取内部类型 |
| 10.1 | 内置工具类型全解 | 吃透 Partial、Pick、Record 等内置类型的适用场景 |
| 10.2 | 模板字面量类型 | 在类型层面拼接与校验字符串,约束命名与格式 |
| 10.3 | 递归类型与类型性能治理 | 处理递归结构,并识别与治理编译性能陷阱 |
第四部分:运行时与工程实践(第 11–16 章)
这一部分离开语法,进入真实工程:模块解析、声明文件、运行时校验、错误处理、测试与构建。它回答的是「类型写完之后,项目怎么跑起来、怎么保证不出事」。
| 编号 | 章节 | 说明 |
|---|---|---|
| 11.1 | ES 模块与模块解析 | 理解模块语法与编译器如何找到你引用的文件 |
| 11.2 | ESM/CJS 互操作与 moduleResolution | 处理两套模块体系的互通与解析策略差异 |
| 11.3 | npm 包、类型声明与 exports | 让你的包在发布后类型仍然对使用者可用 |
| 12.1 | .d.ts 与 @types 机制 | 理解声明文件的来源、查找顺序与加载规则 |
| 12.2 | 为无类型库编写声明 | 手写声明文件,安全接入没有类型的老依赖 |
| 12.3 | 模块扩充与全局类型增强 | 扩展第三方类型与全局对象,并控制影响范围 |
| 13.1 | 类型擦除带来的运行时盲区 | 认清类型系统管不到的边界,理解线上事故的根源 |
| 13.2 | Zod 模式验证与类型推导 | 用校验库从运行时模式反向推导出静态类型 |
| 13.3 | API 契约与边界数据校验 | 在系统边界建立校验防线,让不可信数据变成可信类型 |
| 14.1 | 错误类型与 Result 模式 | 用类型显式表达「可能失败」,而不是依赖异常约定 |
| 14.2 | Promise 与 async/await 的类型 | 掌握异步流程的类型表达与常见陷阱 |
| 14.3 | 并发控制、取消与超时 | 为并发操作加上类型化的取消与超时机制 |
| 15.1 | 单元测试(Vitest/Jest) | 用类型友好的测试框架编写与组织测试 |
| 15.2 | 类型测试(tsd/expect-type) | 为类型本身写测试,防止类型定义悄悄退化 |
| 15.3 | 覆盖率、lint 与 CI 门禁 | 把类型检查、lint 与覆盖率接入持续集成 |
| 16.1 | 编译目标与严格模式配置 | 调好编译目标与严格度,平衡安全与成本 |
| 16.2 | esbuild/swc/tsup 与打包产物 | 选择合适的打包方案,理解产物形态的差异 |
| 16.3 | Monorepo 与 Project References | 管理多包仓库的编译依赖与增量构建 |
第五部分:全栈实战(第 17–18 章)
最后一部分把前面的知识组织成一个完整工程,并回答两个收尾问题:老项目怎么迁,之后往哪走。
| 编号 | 章节 | 说明 |
|---|---|---|
| 17.1 | 项目结构与分层设计 | 用类型强化分层边界,让架构约束可被检查 |
| 17.2 | 前后端共享类型与 API 契约 | 让前后端共用一份契约,消除接口字段的猜测 |
| 17.3 | 部署、发布与版本演进 | 处理发布过程中的类型兼容与破坏性变更 |
| 18.1 | JavaScript 项目渐进式迁移 | 一步步把老项目迁到类型安全,而不是推倒重来 |
| 18.2 | 类型驱动的重构与团队规范 | 借类型推动重构,并把经验固化为团队规范 |
| 18.3 | 学习路径与生态选型 | 规划读完本书之后的成长路线与工具选型 |
前置与附录
前置三篇负责交代背景与体例,附录四篇负责速查与排错。建议第一次通读时先跳过附录,遇到具体问题再回来翻。
| 位置 | 标题 | 说明 |
|---|---|---|
| 序 | 《TypeScript编程入门》序 | 为什么今天还值得学 TypeScript,以及本书的写法取舍 |
| 前言 | 《TypeScript编程入门》前言 | 目标读者、前置知识、体例说明与代码约定 |
| 目录 | 《TypeScript编程入门》目录 | 全书导航与学习路径(即本页) |
| 附录 A | TypeScript 语法速查表 | 常用语法与写法的集中速查 |
| 附录 B | 内置工具类型与常用类型模式 | 内置工具类型清单与高频类型模式 |
| 附录 C | 常用工具、库与资源 | 生态工具、库与学习资源的选型参考 |
| 附录 D | 常见问题与解决方案(FAQ) | 高频报错与疑难问题的排查思路 |
相关专题
本书之外,本站还有若干 TypeScript 专题文章,可作为读完之后的延伸阅读。它们与本书的章节有明确对应关系:
| 延伸阅读 | 对应本书章节 |
|---|---|
| TypeScript 类型层编程 | 与第 9、10 章呼应,深入类型体操的工程化用法 |
| TypeScript 运行时校验 | 与第 13 章呼应,展开校验库的选型与落地 |
| TypeScript 项目架构与 tsconfig | 与第 2、16 章呼应,讲解真实项目的配置组织 |
| TypeScript 测试的类型安全 | 与第 15 章呼应,深入类型测试与测试架构 |
| JavaScript 到 TypeScript 的迁移 | 与第 18 章呼应,给出迁移的实战步骤 |
常见问题速查
下面是读者最常问的几个「该读哪一节」的问题,直接给答案:
| 你的问题 | 去哪一节 |
|---|---|
| 环境装不上、编辑器不报错 | 2.1 安装 Node.js、TS 与编辑器配置 |
| 不知道 tsconfig 各项什么意思 | 2.2 tsc 与 tsconfig.json 初探、16.1 编译目标与严格模式配置 |
分不清 interface 和 type 该用哪个 | 5.1、5.2、5.3 三节连着读 |
| 后端返回的数据类型对不上 | 13.1 运行时盲区、13.3 API 契约与边界数据校验 |
一堆 if 判断状态,越写越乱 | 7.2 判别联合,这是最直接的解药 |
想知道 Partial、Pick 怎么用 | 10.1 内置工具类型全解、附录 B |
| 第三方库没有类型定义 | 12.1 .d.ts 与 @types 机制、12.2 为无类型库编写声明 |
| 老项目想迁 TypeScript 又怕出事 | 18.1 JavaScript 项目渐进式迁移 |
| 团队该怎么定类型规范 | 18.2 类型驱动的重构与团队规范 |
| 类型报错看不懂 | 3.3、13.1,并参考附录 D 常见问题 |
如果你遇到的问题不在表里,可以先用目录里的关键词搜索定位章节,再结合每节的「本节目标」判断是否命中。
读完本书之后
读完全书并不意味着结束。类型系统是一门需要在项目里持续打磨的手艺,真正让知识固化的,是你把它用在自己的代码上。给几条后续建议:
- 找一个真实项目练手。哪怕是一个小工具、一个 CLI 脚本,把它完整地用
strict模式写一遍,收益远大于再读一遍书。 - 读一读你依赖的库的类型定义。很多流行库的
.d.ts本身就是优秀类型设计的范本,第 9、10 章学到的技巧会在里面反复出现。 - 把类型当作沟通工具。在代码评审中,试着用类型来表达你的设计意图,而不只是用它来通过编译。
- 保持对「过度设计」的警惕。类型能力越强,越容易写出没人看得懂的抽象。记住本书反复强调的那条原则:可维护优先于巧妙。
小结
这一页的核心信息可以浓缩成三句话:
- 结构上,全书是「前置 3 篇 + 五部分 18 章 54 节 + 附录 4 篇」,共 61 篇,按学习曲线递进组织。
- 路径上,零基础按顺序读,有 JS 基础从第 5 章切入,急于上手则集中读 8 节速成清单,已会用可当参考手册查。
- 方法上,每一节都遵循「本节目标 → 正文 → 小结 → 衔接」的四段式,任何一节都可以独立阅读。
如果你已经选好了路径,可以直接从对应的章节开始。每一节的末尾都会指向下一节,跟着走不会迷路。
祝你读得顺利。
最后再重复一句:本页不需要从头读到尾。它的作用是「在你需要的时候,三秒钟内把你送到正确的那一节」。把这一页加进书签,比记住任何章节编号都有用。
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。