《TypeScript高级编程》目录

《TypeScript高级编程》全书导航页:说明本书写给谁、解决什么问题,给出完整通读、主线速读与当参考手册三条学习路径,按四个部分列出 11 章 33 节的完整章节索引,每节附一句话说明,并含各部分导读、本篇定位与延伸阅读专题清单,方便按需定位、跳读与长期查阅。

《TypeScript高级编程》目录

这一页是全书的总入口。它不只把 33 节标题排成一张清单,还说明这本书写给谁、从哪一节切入最省力,以及每一节到底解决什么问题。如果你不确定从哪开始,先读「本书定位」与「读者画像与前置知识」,再对照「学习路径」选一条;如果你已经有明确目标,可以直接跳到「分部分章节」按编号定位。

全书结构是:正文 11 章 33 节 + 本篇目录,共 34 篇。正文按「从类型系统原理到工程落地」的推进顺序分为四个部分,每一部分解决一类问题。编号规则有两条:章内的节用「章.节」表示,例如 7.2 是第 7 章第 2 节;节内的子小节用「章.节.序」表示,例如 7.2.3 是第 7 章第 2 节的第 3 个子小节。

需要先说明的是本书的定位边界:它不重复讲语法,也不追求「覆盖 TypeScript 的全部特性」。像联合类型、可选链、async/await 这些日常写法,本书默认你已经会了;它把篇幅留给类型系统内部机制、编译器与语言服务、库作者与运行时这些「写得久才会遇到」的地方。

如何使用本目录

这一页有三种用法,取决于你此刻的状态。

如果你刚拿到这本书,按顺序读「本书定位」「读者画像与前置知识」「学习路径」三节,用十分钟决定自己的入口章节。不要跳过这一步:选错入口比读得慢更浪费时间。

如果你已经读到一半,想查某一节在哪,直接看「分部分章节」里对应部分的表格。每一行都有一句话说明,可以帮你确认是不是你要找的那一节,避免点进去再退出来的反复。

如果你把这本书当手册用,主要会用到每一节开头的编号子小节与末尾的「小结」;不少节末尾还有一段「与本书其它章节的衔接」,专门说明本节与相邻章节的关系,适合顺着线索跳读。

一句话总结这三种用法:第一次读用它选入口,读到中途用它定位,读完之后用它查阅。目录本身不产生知识,它只负责让你少走回头路。

本书定位

这是一本写给库作者、框架作者与工具链开发者的进阶书,而不是语法入门书。它假定你已经能熟练使用 TypeScript 写业务代码,准备把语言本身当成一件需要深入理解的工具来用——真实项目的麻烦通常不在「怎么写类型」,而在「类型系统到底怎么工作」「编译器与编辑器能怎么被扩展」「发布一个库要注意什么」。

它有三个刻意的取舍。第一,讲原理不停在类比:结构化兼容、类型擦除、实例化开销、V8 类型反馈,都会给出机制层面的解释,而不是「大概是这样」。第二,示例贴近真实场景:从写一个自定义 transformer 到发一个双包 ESM/CJS 的库,每一节的代码都尽量是能跑起来的最小片段。第三,不回避深水区:模块解析模式、条件导出、循环依赖、类型级图灵完备这些「语法书不讲但一旦踩到就绕不开」的内容,才是本书的主体。

如果你需要的是一份「TypeScript 语法速查」,这本书明显偏重;如果你已经写过几个能跑的库或工具,但总觉得类型系统像个黑盒、编译变慢不知道怎么查、发布时总担心破坏性变更,那它的节奏是合适的。

还有一点需要提前说明:本书不追求「把每个特性都列全」。像 satisfies、模板字面量类型这类偏语法的内容,本书只在用到时点到为止;反过来,像实例化深度上限怎么触发、条件导出在 bundler 下的优先级、类型擦除后对象在 V8 里的形态这些深入机制,本书会讲得比较细。这个取舍决定了它适合「已经在写库、想把语言用透」的人。

如果你还在学语法、想先建立完整的知识地图,建议先读入门卷;如果你已经能读懂主流库的 .d.ts,那本书的密度对你正好。

还有一个容易被忽略的定位问题:本书的很多内容只有在「你要交付给别人用」时才真正重要。一个只写业务代码、不发布库、不写工具的开发者,可能永远不需要关心 exports 映射或条件导出;但只要你开始写一个供别人 import 的包,第 7 章与第 9 章就会从「听起来很远」变成「今晚就要用」。本书按这个顺序组织,正是为了让这层「距离感」随着你的实际工作自然消失。

读者画像与前置知识

不同类型的读者,起点和建议路径差别很大。先在下面找到最接近自己的那一类。

刚学完语法的人:你会写类型、泛型与联合类型,但没想过它们在编译器内部是什么样子。建议按顺序从第 1 章读到第 11 章,不要跳章——第 1 章建立的「类型只是编译期结构」的直觉,是后面所有章节的地基。同时请确认三件事:能独立读懂一份 tsconfig.json、知道 strict 打开了哪些检查、能用泛型写出一个类型安全的容器。

这一类读者最常见的误区是「把书当文档读」——只读不敲。本书每一节都带可运行示例,请至少把第 1 章与第 5 章的示例完整跑通一遍;跑通一次比读三遍更能建立手感。

已有工程经验的人:这是本书最主要的读者群。建议快速扫过第 1 至第 3 章,把主要精力放在第 4 至第 9 章——元编程、编译器 API、语言服务、库作者与运行时,这些才是「类型能不能被用成工具」的分水岭。第 3 章的类型性能与第 10 章的数据边界不要跳,它们解释了很多「编译越来越慢」「类型写对了线上还是出错」的困惑。

如果你已经有明确的方向(比如就是要写编译器插件,或就是要发布一个 npm 包),可以把不相关的部分快速略过,只吸收其中与类型相关的机制;本书各章开头都写明了它解决什么问题,方便你判断取舍。

从其他生态转来的人(Java / C# / Rust / Go):你熟悉静态类型、泛型与编译期优化,可以跳过第 1 章的部分内容,直接从第 2 章读起,但要特别留意四处差异——结构化类型系统(看形状不看名字)、类型擦除(运行时没有类型信息)、类型级编程(类型系统本身可计算)、以及 Node 生态里「库只提供类型、不提供运行时校验」的默认习惯。第 7 章的声明文件与第 10 章的边界校验对你来说信息密度最高。

请特别留意本书对「运行时边界」的处理方式:在这门语言里,静态类型不会在运行时保护你,边界上的校验必须由你自己补上——这与多数静态类型语言的直觉相反,是转过来的人最容易踩的一处坑。

三类读者的共同建议只有一条:先跑通,再理解,最后才是记住。语言机制的特点是「用不到就会忘」,与其追求读完全书,不如保证每一节都留下一个能跑的例子。

学习路径

下表给出三条典型路径。三条路径不互斥,可以先速成再补齐。

路径适合谁读哪些预计用时
完整通读刚学完语法 / 想重建类型直觉第 1 章至第 11 章顺序读,每节动手跑通示例6–8 周(每天 1 小时)
主线速读已有工程经验、急于上手工具链1.1、2.2、3.1、4.1、5.1、6.2、7.1、8.1、9.2、10.3、11.2 共 11 节2–3 周
参考手册已会用、需要随时查按目录定位章节,优先用每节开头的编号子小节与「小结」按需

两条补充建议:无论选哪条路径,都请完整跑通第 1 章与第 5 章的示例,先把「类型是编译期结构」与「AST 是可编程对象」这两个认知建立起来;如果时间允许,第 2 章的类型级编程与第 9 章的模块解析值得反复练习,它们是本书里最容易在真实项目中被反复查阅的两处内容。

需要提醒的是,「主线速读」给的是最快建立全局观的清单,不是「只读这些就够」。被略过的节往往不是不重要,而是可以等到你真的遇到对应问题时再回头补——这也正是「参考手册」这条路径存在的意义。

一份可执行的八周计划

上面三条路径偏原则。如果你希望有一份可以直接照着打勾的安排,下面这份八周计划可以作为起点(按每天投入一小时估算),它对应的是「完整通读」路径。

周次主要任务完成标志
第 1 周第 1 章:类型系统原理能解释一次 not assignable 报错到底卡在哪条规则上
第 2 周第 2 章:类型级编程能独立写出一个条件类型加递归的类型工具
第 3 周第 3 章:类型性能治理能用 --extendedDiagnostics 找到最慢的类型实例化
第 4 周第 4 章:装饰器与元编程能用装饰器与元数据写一个最小的 DI 容器
第 5 周第 5 章:编译器 API能写一个 transformer,把源码里的某种模式改写掉
第 6 周第 6 章:语言服务与编辑器能跑通一个 tsserver 插件,或在项目里落地一次 codemod
第 7 周第 7–9 章:库作者、运行时与模块能发布一个双包库,并解释它的模块解析过程
第 8 周第 10–11 章:边界、生态与架构能在项目边界加上校验,并写出一份类型规范

这份计划的关键不在于准时,而在于每周都有产出。语言机制如果不落到代码上,遗忘速度会非常快。如果某一周的任务没有完成,宁可延长这一周,也不要为了赶进度跳过动手环节。

每周结束时,可以用三个问题自查:这一周学到的机制,我在自己的代码里验证过吗?遇到报错时,我是读懂了报错还是绕过去了?如果现在合上书,我能向别人讲清楚这一周最核心的那个概念吗?三个问题里只要有一个答不上来,就值得回头补一补再往下走。

按问题定位:十个常见入口

如果你不是想「学完一本书」,而是此刻被某个具体问题卡住了,可以直接查下表。左边是你遇到的现象,右边是应该先读的节。

你遇到的问题先去读
某个赋值莫名其妙报错,不知道违反了什么规则1.1 结构化类型与兼容性判定
运行时想判断一个对象是不是某个接口,发现 instanceof 没用1.2 类型擦除与运行时边界
泛型函数推导出的类型总是偏「宽」,和预期不符1.3 类型推导算法与上下文类型
写了一个类型工具,遇到联合类型就得到奇怪的结果2.1 条件类型与分发
类型工具越写越绕,还经常报「类型实例化过深」2.2 infer 与递归、3.2 尾递归消除与深度限制
tsc 或编辑器越来越卡,不知道慢在哪3.1 类型实例化开销与测量、3.3 复杂泛型的重构手法
想把类型信息带到运行时,做依赖注入或 AOP4.2 reflect-metadata 与依赖注入容器、4.3 AOP 与运行时类型信息
想写一个构建插件或批量改写代码的脚本5.2 自定义 transformer、6.3 重构工具与 codemod
发布的包用户 import 报错,或类型解析对不上7.1 .d.ts 生成与 exports 映射、9.1 moduleResolution 各模式对照
接口返回的数据类型对不上,运行时才发现10.1 类型守卫与验证库原理、10.3 边界数据与不可信输入

这张表覆盖的是最高频的十类问题。如果你的问题不在表里,可以先用关键词在目录里定位章节,再结合每节的「小结」判断是否命中。

需要提醒的是,上表给的是「最快解药」,不是「唯一答案」。很多现象背后是同一个根因——比如类型解析对不上,往往既要在 package.json 的 exports 里补条件,也要检查 moduleResolution 模式;表里给出的两到三节,建议按顺序读完再动手改代码。

分部分章节

下面按四个部分列出全部 11 章 33 节,每一行给出编号、标题与一句话说明。

表格里的编号规则是「章.节」,例如 7.2 表示第 7 章第 2 节。点击标题即可进入该节正文。每个部分开头都有一段导读,说明这一部分在整个推进顺序中的位置;如果你只想知道某节讲什么,直接看表格第三列的说明即可。

正文的每一节都遵循「编号标题 → 编号子小节(N.N.x)→ 小结」的写法,不少节末尾还有一段「与本书其它章节的衔接」,所以即使你从中间某节切入,也能顺着衔接线索找到上下文,不必担心前情缺失。

四个部分的规模与职责如下,可以先扫一眼,判断自己该重点读哪一部分:

部分章节节数解决的问题
第一部分 类型系统与类型级编程第 1–3 章9类型如何判定、如何被计算、代价从哪来
第二部分 元编程与工具链第 4–6 章9如何用装饰器、编译器 API 与语言服务改造工具链
第三部分 库作者、运行时与模块第 7–9 章9如何发布一个库,并理解它在运行时与模块系统里的行为
第四部分 边界、生态与架构第 10–11 章6如何在系统边界守住类型,并让类型沉淀为团队架构
合计第 1–11 章33一条从语言机制到工程落地的完整进阶路径

各部分之间的依赖关系

四个部分不是平行关系,而是层层依赖的。下面这张表说明每一部分依赖什么、又被谁依赖,方便你判断能不能跳过某一部分:

部分依赖被依赖能否跳过
第一部分 类型系统与类型级编程无全部后续部分不建议跳过,是全书的判定规则地基
第二部分 元编程与工具链第一部分第三、四部分只做业务开发可按需选读
第三部分 库作者、运行时与模块第一部分第四部分不发布库者可按需选读
第四部分 边界、生态与架构全部前三部分无可在有真实项目时再读

一个实用的判断原则是:第一部分是绕不过去的地基,其余部分都可以根据你的实际工作取舍。如果你在写库或工具,第二、三部分值得尽早补上;如果你只做业务开发,第二、三部分可以压缩到 4.2、5.1、9.1 这几节,把时间留给第 10、11 章的边界与架构。

需要补充的是,这张表描述的是「知识依赖」,不是「阅读顺序」。你完全可以在读第二部分的同时穿插读第三部分,只要保证遇到跨端类型问题时回头补齐第 10 章的边界校验即可。

第一部分:类型系统与类型级编程(第 1–3 章)

这一部分是全书的地基,解决「类型到底是怎么被判定和被计算的」。第 1 章讲类型系统原理——结构化兼容、类型擦除、类型推导,它们决定了你写的每一个类型在编译器眼里是什么;第 2 章把类型系统当成一门可编程的语言,讲条件类型、infer 与类型级数据结构;第 3 章回到工程,讲这套机制在编译期付出的代价,以及如何治理。

三章是层层递进的关系:不理解第 1 章的判定规则,第 2 章的类型级技巧会变成「照着抄但不明白」;不理解第 2 章的可计算性,第 3 章的实例化开销就无从谈优化。节奏上,第 1 章请慢读并把报错信息读透,第 2 章要动手写几个类型工具,第 3 章可以等到编译真的变慢时再回头精读。

这一部分有一个容易被跳过的细节:类型擦除意味着运行时什么都不会留下。很多「为什么 instanceof 对接口没用」「为什么泛型信息在运行时消失了」的困惑,根都在 1.2 节。

编号章节说明
1.1结构化类型与兼容性判定把「A 能否赋给 B」从直觉变成可复述的规则,并解释参数逆变与返回值协变
1.2类型擦除与运行时边界讲清类型只活在编译期,运行时什么都不会留下,以及由此带来的边界问题
1.3类型推导算法与上下文类型从推导方向与上下文类型理解编译器怎么「猜」类型,以及猜错时怎么引导它
2.1条件类型与分发用条件类型做类型分支,并解释裸类型参数带来的分发行为
2.2infer 与递归用 infer 从结构中提取类型,并靠递归构造可终止的类型计算
2.3类型级数据结构与图灵完备在类型层面实现元组、映射与队列,理解类型系统可计算的能力边界
3.1类型实例化开销与测量定位编译变慢的元凶,并用 --extendedDiagnostics 把开销量化出来
3.2尾递归消除与深度限制认识实例化深度上限,并把递归改写成可被尾递归消除的形式
3.3复杂泛型的重构手法用重载、接口拆分与类型工具降低复杂泛型的理解成本与编译成本

第二部分:元编程与工具链(第 4–6 章)

这一部分回答「除了写类型,还能用 TypeScript 做什么」。第 4 章讲装饰器与元编程——标准装饰器、reflect-metadata 与依赖注入、AOP,它们让类型信息在运行时重新变得可用;第 5 章下沉到编译器,讲 Compiler API、自定义 transformer 与 AST 代码生成;第 6 章再往上一层,讲语言服务与编辑器,包括 TS Server、自定义 tsPlugin 与 codemod。

三章之间有明确的依赖方向:第 4 章关注「运行时能拿到什么」,第 5 章关注「编译期能改什么」,第 6 章关注「编辑器里能补什么」。做框架的人重点读第 4 章,做构建插件的人重点读第 5 章,做编辑器工具或大规模重构的人重点读第 6 章。如果时间紧张,5.1 与 5.2 是这一部分性价比最高的两节。

一个务实的读法是:先挑一个你手头真实存在的小需求(比如给某个函数自动加日志、或写一个批量改 import 的脚本),带着它去读对应章节,读完立刻落地。元编程的知识如果不落到一个真实需求上,很容易读完就忘。

这一部分也是全书「代码量最大」的一块:装饰器与 transformer 都需要你真正写出来、跑起来,才能体会到「类型信息在运行时是怎么被重建的」或「AST 改写为什么比字符串替换可靠」。如果你只是把这三章当读物过一遍,收获会明显小于第 1 章那种偏原理的内容——请务必留出动手时间。

编号章节说明
4.1标准装饰器(TS 5.x)对照旧装饰器讲清 TC39 标准装饰器的语义、能力与迁移路径
4.2reflect-metadata 与依赖注入容器用元数据把类型信息带到运行时,并实现一个类型化的 DI 容器
4.3AOP 与运行时类型信息用装饰器织入横切逻辑,并守住「运行时类型信息」这件事的边界
5.1TypeScript Compiler API 入门用 Compiler API 解析源码、遍历 AST 并产出诊断信息
5.2自定义 transformer编写自定义 transformer,在编译期改写 AST 并接入构建流程
5.3AST 与代码生成用工厂函数构造节点,把 AST 还原为可读、可格式化的源码文本
6.1TS Server 与 LSP理解 TS Server 的协议与增量语言服务,为编辑器插件打基础
6.2自定义 tsPlugin编写 tsserver 插件,扩展补全、诊断与代码操作
6.3重构工具与 codemod用 codemod 工具批量改写代码,安全落地大范围重构

第三部分:库作者、运行时与模块(第 7–9 章)

这一部分把视角从「写代码」转到「交付代码」。第 7 章讲库作者要面对的全部问题——生成 .d.ts、用 exports 映射暴露类型入口、同时发布 ESM 与 CJS 双包、判断哪些改动属于破坏性变更;第 8 章下沉到运行时,讲 V8 的类型反馈与 JIT、类型擦除后对象的真实形态、以及怎么用火焰图做剖析;第 9 章讲模块与解析深水区,包括各 moduleResolution 模式、条件导出与循环依赖。

三章串起来是一条完整的交付链路:第 7 章决定「你发布出去的东西长什么样」,第 8 章决定「它在用户机器上跑得多快」,第 9 章决定「它能不能被正确解析并加载」。只发布过一两个小包的人,建议把第 7 章与第 9 章连着读;对运行时性能有要求的人,第 8 章的三节建议全读。

这一部分最值得带走的一条原则是:库的边界是契约,不是实现细节。exports 字段、声明文件、semver 版本号,都是你与用户之间的契约;改动它们之前先想清楚「这是不是一次破坏性变更」,比事后道歉划算得多。

编号章节说明
7.1.d.ts 生成与 exports 映射生成可发布的声明文件,并用 exports 映射暴露类型入口
7.2双包(ESM/CJS)与类型解析同时发布 ESM 与 CJS 产物,并让类型解析各归其位
7.3semver、发布与类型破坏性变更判断哪些类型改动属于破坏性变更,并据此规划版本号
8.1V8 类型反馈与 JIT理解 V8 如何依据类型反馈优化热点,并写出对 JIT 友好的代码
8.2类型擦除后的运行时形态从编译产物看类型擦除后的对象形态、隐藏类与属性访问成本
8.3性能剖析与火焰图用 profiler 与火焰图定位运行时热点,而不是凭直觉优化
9.1moduleResolution 各模式对照对照 node10、node16、bundler 各模式的解析差异与适用场景
9.2条件导出与 bundler 语义用条件导出在不同环境下暴露不同入口,并理解其匹配优先级
9.3循环依赖与类型-only 导入用 import type 与依赖分层切断循环,并避免运行时副作用

第四部分:边界、生态与架构(第 10–11 章)

最后一部分把前三部分的机制收束成两条实践主线。第 10 章讲「类型安全的运行时边界」——静态类型在运行时失效,边界上的数据必须被校验;这一章给出类型守卫与验证库原理、序列化往返的类型处理,以及面对不可信输入时的做法。第 11 章讲「生态与演进」——各版本的 breaking changes 怎么评估、存量项目怎么渐进式迁移并逐步严格化、以及怎么让类型从个人习惯升级为团队规范。

两章的顺序建议不要颠倒:先把第 10 章的边界守住,第 11 章的架构讨论才有落脚点——否则「类型驱动架构」很容易变成一句口号。如果你正负责一个存量项目,第 11 章的 11.2 与 11.3 可以直接当作行动清单来读。

这一部分最短,但它是全书的收口。很多项目的技术能力并不差,卡住的地方往往是「边界数据没校验」和「没有统一的类型规范」这两件事;第 10、11 章就是针对这两件事写的。

读完之后,你应该能回答三个问题:系统边界上的数据,我用什么方式证明它是可信的?存量项目要开启严格检查,我按什么顺序推进?团队里的类型约定,是写在文档里还是写在类型里?这三问如果都能答上,说明前三个部分的机制已经真正被你转化成了工程判断。

编号章节说明
10.1类型守卫与验证库原理从用户自定义类型守卫讲到 Zod 一类库的类型推导机制
10.2序列化与反序列化类型给 JSON 往返、Date 与 Map 等场景补上类型与校验
10.3边界数据与不可信输入在系统边界做「解析而非断言」,把不可信输入收敛为可信类型
11.1TS 版本演进与 breaking changes梳理各版本的关键变更,评估升级路径与迁移代价
11.2渐进式迁移与严格化路径在存量项目里分阶段开启严格检查,并收敛历史报错
11.3类型驱动架构与团队规范用类型表达领域约束,并把它沉淀为团队可执行的规范

本篇与其他内容

本页是全书唯一的导航篇,不承载具体技术内容。它的价值在于「在你需要的时候,三秒钟内把你送到正确的那一节」。

位置标题说明
目录《TypeScript高级编程》目录全书导航、三条学习路径与 33 节索引(即本页)

需要说明的是,本书没有序与附录篇,正文 33 节之外只有这一页。如果你还需要 TypeScript 的语法基础与工具类型速查,可以阅读同一系列的入门卷《TypeScript编程入门》;如果你更关心「把类型用在真实项目里怎么落地」,可以读实战卷《TypeScript编程实战》。三本书共用同一套术语与代码约定,衔接最顺。

三卷的分工可以这样理解:入门卷回答「这门语言能做什么」,实战卷回答「在真实项目里该怎么做」,本卷回答「语言本身是怎么工作的、能被扩展成什么」。如果只读其中一本,入门卷让你写对代码,实战卷让你写稳项目,本卷让你把语言用成一件称手的工具——后者更依赖对机制的理解,也更容易在遇到具体问题时被反复查阅。

相关专题

本书之外,本站还有若干 TypeScript 专题文章,可作为读完之后的延伸阅读。它们与本书的章节有明确对应关系:

延伸阅读对应本书章节
TypeScript 类型级编程与第 2 章呼应,展开类型级数据结构的更多写法
TypeScript 项目架构与 tsconfig与第 1、3 章呼应,展开工程配置与编译性能治理
TypeScript 模块解析(ESM/CJS)与第 9 章呼应,深入模块解析模式与双包发布
TypeScript 构建性能优化与第 3、8 章呼应,讲解构建速度与产物治理
TypeScript CLI 开发与第 5、6 章呼应,展开编译器 API 与工具链开发
TypeScript 测试的类型安全与第 10、11 章呼应,讲类型测试与边界校验

这些专题与本书不是重复关系:本书给的是「一条完整的进阶路径」,专题给的是「某一个点上更深的做法」。遇到具体问题时,先回目录定位章节,再顺着对应专题深挖。

反过来,如果你已经在某个专题里踩过坑,读本书对应章节时会有明显的「对上了」的感觉——本书会把那些零散的经验放回一条完整的机制链路里,告诉你它在整体中的位置。这也是本页把它们列出来的原因。

建议的用法是:读完本书的某一章之后,顺手翻一翻对应的专题,把这一章建立的机制认知落到一个更具体的做法上;或者反过来,先在专题里解决一个眼前的实际问题,再回到本书补上它背后的原理。两种顺序都成立,关键是不要让「原理」与「做法」长期分家。

小结

这一页的核心信息可以浓缩成三句话:

  • 结构上,全书是「正文 11 章 33 节 + 本篇目录」,按语言机制到工程落地的顺序分为类型系统与类型级编程、元编程与工具链、库作者运行时与模块、边界生态与架构四个部分。
  • 路径上,刚学完语法按顺序通读,已有工程经验从第 4 章切入或走 11 节主线速读清单,已会用可当参考手册按需查。
  • 方法上,每一节都遵循「编号标题 → 编号子小节(N.N.x)→ 小结」的写法,可以独立阅读,也可以顺着「与本书其它章节的衔接」跳读。

如果你已经选好了路径,可以直接从对应的章节开始。每一节的末尾都会指向下一节或相邻章节,跟着走不会迷路。

最后补一条使用建议:读本书时,请把「这一节我要解决什么问题」写在便签上,读完对照「小结」检查一遍。语言机制类内容的特点是「读的时候都懂,用的时候想不起来」,而目录加小结的组合,正是为了在你想不起来时能最快回到现场。

最后再重复一句:本页不需要从头读到尾。它的作用是「在你需要的时候,三秒钟内把你送到正确的那一节」。把这一页加进书签,比记住任何章节编号都有用。

如果你只打算记住一件事,那就记住这条主线:类型是编译期的结构,运行时不会留下它。第 1 章建立这个认知,第 2、3 章在它之上讨论「能算什么、代价多少」,第 4 至 6 章讨论「怎么在编译期与运行时之间搬运信息」,第 7 至 9 章讨论「交付出去后它长什么样」,第 10、11 章讨论「它失效时你靠什么兜底」。33 节都在围绕这一条主线展开。

继续阅读

探索更多技术文章

浏览归档,发现更多关于系统设计、工具链和工程实践的内容。

全部文章 返回首页

「typescript」更多文章

  1. 《TypeScript高级编程》11.3 类型驱动架构与团队规范
  2. 《TypeScript高级编程》11.2 渐进式迁移与严格化路径
  3. 《TypeScript高级编程》11.1 TS 版本演进与 breaking changes