posts

《TypeScript编程入门》 · 全书目录与章节索引(61 节)

《TypeScript编程入门》全 61 节,是一套面向零基础的 TypeScript 完整教材:从语言诞生史与设计目标讲起,依次覆盖开发环境与工具链、基本类型系统、函数与泛型、接口与类、联合类型与类型收窄、高级类型与工具类型、模块与声明文件、运行时验证、错误处理与异步、测试与构建配置,最后用一个全栈项目与迁移方案串联全部知识点。本页给出全书分章目录。

《TypeScript编程入门》全 61 节,是一套面向零基础的 TypeScript 完整教材:从「为什么需要 TypeScript」讲到类型系统全貌,再落到工程实践与全栈项目。

本页是《TypeScript编程入门》的全书目录:按章节顺序列出全部 61 节,点击标题直达正文。也可以从各节的「上一篇 / 下一篇」按顺序通读。

全书概览

项目内容
书稿《TypeScript编程入门》
章节数61 节
领域TypeScript 语言基础与类型系统
阅读方式从「目录」篇进入按顺序通读,或按章节表跳读
上级专题书稿专题

全书目录

前置:序、前言与目录

节文章核心内容
—《TypeScript编程入门》序《TypeScript编程入门》的序。为什么在类型化 JavaScript 的今天依然值得系统学习 …
—《TypeScript编程入门》前言《TypeScript编程入门》前言:说明本书的目标读者与前置知识、五部分 18 章的结构分工、每节…
—《TypeScript编程入门》目录《TypeScript编程入门》全书导航页:说明本书定位、读者画像与前置知识、三条学习路径与各部分之…

第 1 章 认识 TypeScript

节文章核心内容
1.11.1 TypeScript 的诞生与设计目标本节从 2010 年前后大型 JavaScript 应用的维护困境讲起,梳理 TypeScript …
1.21.2 与 JavaScript 的关系(超集·类型擦除)本节回答一个新手最容易搞混的问题:TypeScript 和 JavaScript 到底是什么关系。我…
1.31.3 适用场景与生态版图本节把 TypeScript 放回真实的技术版图:先给出判断「何时收益最大、何时不划算」的几条标准,…

第 2 章 开发环境与工具链

节文章核心内容
2.12.1 安装 Node.js、TS 与编辑器配置本节从零搭建 TypeScript 开发环境:先讲清为什么必须先装 Node.js,再对比官方安装包…
2.22.2 tsc 与 tsconfig.json 初探本节拆开 TypeScript 编译器 tsc 与它的配置文件 tsconfig.json。先运行 …
2.32.3 第一个项目:从零到运行本节把零散知识组装成一个能跑起来的完整项目:命令行温度换算器。从创建目录、初始化 npm、安装 ty…

第 3 章 基本类型系统

节文章核心内容
3.13.1 原始类型与类型注解本节从 TypeScript 的原始类型讲起,逐一介绍 string、number、boolean、…
3.23.2 数组、元组与枚举本节讲透 TypeScript 里三种「复数形态」的类型:数组、元组与枚举。先对比 T[] 与 Ar…
3.33.3 any·unknown·never·void 与类型断言本节处理类型系统里的四个边界类型:any、unknown、never、void。先说明 any 为什…

第 4 章 函数与作用域

节文章核心内容
4.14.1 签名、可选参数与默认值函数是 TypeScript 程序的基本构件,而函数签名则决定了调用方能看到什么、编译器能替你检查什…
4.24.2 重载、this 类型与箭头函数一个函数在类型层面可以有多个签名,这就是函数重载。本节先讲清重载签名与实现签名的分工、匹配顺序以及常…
4.34.3 泛型函数入门泛型是 TypeScript 类型系统里最重要的复用机制。本节从「同一段逻辑要处理多种类型」这个朴素…

第 5 章 接口与类型别名

节文章核心内容
5.15.1 interface 定义对象结构本节从「如何描述一个对象长什么样」这个问题出发,系统讲解 interface 的定义方式与核心能力:…
5.25.2 type 别名、联合与交叉本节讲解 type 别名的定义方式与它相对 interface 的独有能力:给联合类型、交叉类型、元…
5.35.3 结构化类型与两者取舍本节回答两个贯穿全章的问题:为什么 TypeScript 只比较类型结构、不比较类型名字,以及 in…

第 6 章 类与面向对象

节文章核心内容
6.16.1 类、访问修饰符与参数属性本节讲解 TypeScript 的类相比 JavaScript 多出了什么:访问修饰符如何约束成员的…
6.26.2 继承、抽象类与多态本节讲解 TypeScript 中类的继承与多态:如何用 extends 与 super 复用父类行…
6.36.3 接口实现与 mixin本节讲解 TypeScript 中类与接口的两条连接方式:用 implements 让一个类同时承诺…

第 7 章 联合类型与类型收窄

节文章核心内容
7.17.1 联合类型与字面量类型本节先讲联合类型,说明如何用「A | B」表达取值可能是若干形态之一,再引入字面量类型,把具体的字符…
7.27.2 判别联合(Discriminated Unions)本节讲解判别联合,也就是给联合的每个成员加一个共同的判别字段,让编译器能顺着这个字段自动区分当前处于…
7.37.3 类型守卫与控制流分析本节讲解当数据结构本身没有判别字段时,如何通过运行期检查把联合类型收窄到具体成员。内容涵盖 type…

第 8 章 泛型进阶

节文章核心内容
8.18.1 泛型约束(extends)本节承接泛型函数入门,讲清为什么裸泛型在函数体里几乎什么都做不了,以及 extends 关键字如何把…
8.28.2 泛型默认值与类型推断本节讲清泛型默认值的语法、求值顺序,以及默认值必须满足约束这条硬规则。随后系统梳理类型推断的四个来源…
8.38.3 泛型在接口·类·函数中的协同本节把泛型从函数扩展到接口与类,讲清三者各自声明类型参数的位置与作用域,解释为什么静态成员不能用类的…

第 9 章 高级类型

节文章核心内容
9.19.1 keyof·typeof 与索引访问类型本节讲解 TypeScript 类型编程的三块基石:用 keyof 取出对象类型的全部键名,用 ty…
9.29.2 映射类型与键重映射(as)本节讲解映射类型:如何用 [K in keyof T] 遍历一个类型的所有键并批量生成新类型,如何用…
9.39.3 条件类型与 infer本节讲解类型运算的最后一块拼图:条件类型 T extends U ? X : Y 如何充当类型层面的…

第 10 章 类型体操与工具类型

节文章核心内容
10.110.1 内置工具类型全解本节把 TypeScript 标准库里的内置工具类型逐个拆开:从对象修饰的 Partial、Requ…
10.210.2 模板字面量类型本节讲解模板字面量类型如何把字符串拼接搬进类型系统:用反引号加 ${} 构造字面量模式,与联合类型组…
10.310.3 递归类型与类型性能治理本节讲类型层面的最后一块硬骨头:递归类型如何用「自我引用加终止条件」描述 JSON、树与深层修饰;编…

第 11 章 模块与包管理

节文章核心内容
11.111.1 ES 模块与模块解析本节从模块化的历史讲起,说明为什么全局脚本会互相污染、ES 模块如何用显式的 export 与 im…
11.211.2 ESM/CJS 互操作与 moduleResolution现实项目里 ES 模块与 CommonJS 长期并存,本节讲清两者如何互相调用。先看 package…
11.311.3 npm 包、类型声明与 exports本节从使用者视角切换到包作者视角,讲清一个 npm 包如何被 TypeScript 正确识别。先看 …

第 12 章 声明文件与类型扩展

节文章核心内容
12.112.1 .d.ts 与 @types 机制本节从类型擦除讲起,解释为什么编译产物 .js 里不剩任何类型信息、消费方却依然能获得完整补全,从而…
12.212.2 为无类型库编写声明本节讲的是 .d.ts 的实战编写:当一个库既没有自带类型、社区也没有 @types 包时,如何从 …
12.312.3 模块扩充与全局类型增强本节讲 TypeScript 最易被误用的一项能力:不新建声明,而是往已有类型上「长」成员。先讲清声…

第 13 章 运行时验证与类型安全边界

节文章核心内容
13.113.1 类型擦除带来的运行时盲区本节从类型擦除讲起:TypeScript 编译时会把 interface、类型注解与断言全部抹掉,只…
13.213.2 Zod 模式验证与类型推导本节介绍如何在运行时检查数据形状:用 Zod 声明 schema,用 z.infer 让编译期类型自…
13.313.3 API 契约与边界数据校验本节把校验真正落到工程上:先列出一份完整的边界清单,再逐个给出落地方式——环境变量启动期校验并 fa…

第 14 章 错误处理与异步编程

节文章核心内容
14.114.1 错误类型与 Result 模式本节把「错误」当成类型问题来讨论:为什么 catch 的参数只能是 unknown,如何用自定义错误…
14.214.2 Promise 与 async/await 的类型本节把 Promise 当成带类型参数的状态机来拆解:Promise 里的 T 描述什么,th…
14.314.3 并发控制、取消与超时本节解决异步编程里最容易被忽略的三个问题:并发数不受控、任务无法取消、请求没有超时。我们手写一个泛型…

第 15 章 测试与质量保障

节文章核心内容
15.115.1 单元测试(Vitest/Jest)本节从零为 TypeScript 项目搭起单元测试:先比较 Vitest 与 Jest 的取舍,再手…
15.215.2 类型测试(tsd/expect-type)本节讲一个常被忽视的话题:类型本身也要写测试。先说明运行时断言为什么测不到类型,再用 @ts-exp…
15.315.3 覆盖率、lint 与 CI 门禁本节是第 15 章收官,把零散的测试变成系统性防线:先厘清语句、分支、函数、行四种覆盖率口径与阈值配…

第 16 章 构建与工程配置

节文章核心内容
16.116.1 编译目标与严格模式配置本节把 tsconfig.json 里最容易配错的两组选项讲透:编译目标与严格模式。先看 targe…
16.216.2 esbuild/swc/tsup 与打包产物本节解释为什么 tsc 不再是唯一的编译路径,并对比 esbuild、swc、tsup 三类工具的定…
16.316.3 Monorepo 与 Project References本节解决「多个包如何在一个仓库里协同」这件事。先说清什么时候真的需要 Monorepo,再用一个 p…

第 17 章 全栈项目实战

节文章核心内容
17.117.1 项目结构与分层设计本节把前面散落的语言知识收拢成一个能交付的项目骨架:先对比按类型、按功能、按层三种组织方式的代价,再…
17.217.2 前后端共享类型与 API 契约本节解决全栈项目里最费神的一类问题:同一份数据结构在前后端被写了两遍。我们先比较手工复制、共享包、代…
17.317.3 部署、发布与版本演进本节把写好的 TypeScript 代码真正送上生产:先讲清构建产物与运行时的差异,对比静态托管、长…

第 18 章 大型项目架构与迁移

节文章核心内容
18.118.1 JavaScript 项目渐进式迁移本节讲解如何在不推倒重来的前提下,把类型系统逐步铺进一个存量 JavaScript 项目。内容包括三…
18.218.2 类型驱动的重构与团队规范本节讲如何把类型系统从「编译能过」升级为「持续重构的引擎」。内容包括编译器作为重构安全网的原理、用 …
18.318.3 学习路径与生态选型本节是全书的收尾,先给出一张覆盖 18 章的知识地图与能力自评表,再按前端应用、Node 后端、库与…

附录

节文章核心内容
—附录 A TypeScript 语法速查表本附录是一份可随时翻阅的 TypeScript 语法速查表:用表格对照原始类型与字面量、数组元组枚举…
—附录 B 内置工具类型与常用类型模式本附录分两部分:先给出一份内置工具类型全解,逐个列出签名、作用、等价手写实现与典型用例;再整理品牌类…
—附录 C 常用工具、库与资源本附录按类别汇总 TypeScript 生态里的常用工具与库:编译器与运行时、打包构建、类型检查与 …
—附录 D 常见问题与解决方案(FAQ)本附录汇总初学者最常撞上的十三类 TypeScript 报错与困惑,覆盖模块找不到声明、属性不存在、…
全部文章 Game Golang Saas Rust 游戏开发 客户端开发 GameDev TypeScript Lua Products
typescript

《TypeScript编程入门》7.3 类型守卫与控制流分析

本节讲解当数据结构本身没有判别字段时,如何通过运行期检查把联合类型收窄到具体成员。内容涵盖 typeof、instanceof、in 运算符、真值判断与相等比较这几类内置收窄手段,以及自定义类型守卫和断言函数的写法与适用边界。我们还会深入控制流分析的机制,解释为什么收窄在闭包回调里会失效,并给出可落地的规避写法。读完后你能为任意联合类型选择合适的收窄方式,并能在收窄失效时自行定位原因。

8 分钟阅读
TypeScript TypeScript编程入门 类型守卫
typescript

《TypeScript编程入门》7.2 判别联合(Discriminated Unions)

本节讲解判别联合,也就是给联合的每个成员加一个共同的判别字段,让编译器能顺着这个字段自动区分当前处于哪种形态。我们会从「用布尔标志描述状态」的经典痛点出发,一步步重构成判别联合,再用 never 做穷尽性检查,保证新增分支时不会漏处理。你还将看到判别字段的选取原则、与可选字段建模的对比,以及真实项目里常见的踩坑点。读完后你能为请求状态、事件、表单结果这类场景写出可穷尽、可维护的建模。

8 分钟阅读
TypeScript TypeScript编程入门 判别联合
typescript

《TypeScript编程入门》7.1 联合类型与字面量类型

本节先讲联合类型,说明如何用「A | B」表达取值可能是若干形态之一,再引入字面量类型,把具体的字符串、数字、布尔值当作类型使用,从而写出既安全又贴近业务语义的约束。你会看到 let 与 const 在字面量推断上的差异、as const 的实际作用、联合类型成员访问的边界,以及字面量联合与枚举之间的取舍。读完后你能用字面量联合取代散落各处的魔法字符串,为下一节判别联合与类型收窄打好基础。

8 分钟阅读
TypeScript TypeScript编程入门 联合类型
typescript

《TypeScript编程入门》6.3 接口实现与 mixin

本节讲解 TypeScript 中类与接口的两条连接方式:用 implements 让一个类同时承诺多份契约,用接口继承接口组合出更大的类型;并系统对比接口、抽象类与类型别名的适用边界。随后进入 mixin 模式,讲清如何用构造器泛型把多个行为混入同一个类,从而绕开单继承的限制,并给出类型安全写法的常见坑。读完本节,你能为复杂业务设计出契约清晰、复用灵活的类结构。

8 分钟阅读
TypeScript TypeScript编程入门 implements
typescript

《TypeScript编程入门》6.2 继承、抽象类与多态

本节讲解 TypeScript 中类的继承与多态:如何用 extends 与 super 复用父类行为,方法重写时 override 关键字和 noImplicitOverride 选项如何防止漏改,抽象类与抽象方法怎样把公共流程固定下来而把差异留给子类,以及多态与里氏替换原则在真实代码中的体现。读完本节,你能用抽象类设计可扩展的骨架代码,并认清继承的代价与何时该改用组合。

8 分钟阅读
TypeScript TypeScript编程入门 继承与多态
typescript

《TypeScript编程入门》6.1 类、访问修饰符与参数属性

本节讲解 TypeScript 的类相比 JavaScript 多出了什么:访问修饰符如何约束成员的可见性,参数属性怎样把构造函数的样板赋值压缩成一行,普通私有成员与井号私有字段又有什么本质差别。读完本节,你能为真实工程里的领域模型写出既安全又简洁的类,并避开严格模式下属性未初始化的常见报错,为后续学习继承与多态打好基础。

9 分钟阅读
TypeScript TypeScript编程入门 类与访问修饰符
typescript

《TypeScript编程入门》5.3 结构化类型与两者取舍

本节回答两个贯穿全章的问题:为什么 TypeScript 只比较类型结构、不比较类型名字,以及 interface 与 type 到底该怎么选。内容涵盖结构化类型(鸭子类型)的判定规则、它带来的「意外兼容」风险、用品牌类型模拟名义类型的工程手法,并给出一份可直接照做的取舍清单与代码评审要点。读完本节,你既能解释类型兼容背后的原理,也能在团队里统一 interface 与 type 的使用规范。

8 分钟阅读
TypeScript TypeScript编程入门 结构化类型
typescript

《TypeScript编程入门》5.2 type 别名、联合与交叉

本节讲解 type 别名的定义方式与它相对 interface 的独有能力:给联合类型、交叉类型、元组、函数、字面量起名字。重点剖析联合类型(这个或那个)与交叉类型(这个并且那个)的语义差别、组合规律与常见陷阱,并用一个状态机模型演示两者如何协同表达业务约束。读完本节,你能用类型精确描述「多种可能」与「多项能力叠加」,并知道何时该用 type、何时该用 interface。

7 分钟阅读
TypeScript TypeScript编程入门 联合类型
typescript

《TypeScript编程入门》5.1 interface 定义对象结构

本节从「如何描述一个对象长什么样」这个问题出发,系统讲解 interface 的定义方式与核心能力:必填属性、可选属性、只读属性、方法签名、索引签名以及接口继承。读者将学会用 interface 为真实业务对象建模,理解 excess property check 的触发时机,并掌握常见报错的定位思路。读完本节,你能为 API 响应、配置项、组件 props 等结构化数据写出清晰的类型契约。

8 分钟阅读
TypeScript TypeScript编程入门 interface
typescript

《TypeScript编程入门》4.3 泛型函数入门

泛型是 TypeScript 类型系统里最重要的复用机制。本节从「同一段逻辑要处理多种类型」这个朴素需求出发,讲清类型参数的含义、泛型函数的写法、类型参数的自动推断与显式指定,并重点说明泛型与 any 的本质差别——泛型保留类型信息,any 抹掉类型信息。最后给出多个类型参数、数组与对象泛型的常见模式,以及初学者最容易踩的推断陷阱。读完本节,你能为任意函数写出既不丢类型又足够通用的签名。

9 分钟阅读
TypeScript TypeScript编程入门 泛型函数
typescript

《TypeScript编程入门》4.2 重载、this 类型与箭头函数

一个函数在类型层面可以有多个签名,这就是函数重载。本节先讲清重载签名与实现签名的分工、匹配顺序以及常见的重载误用,再转向 TypeScript 对 this 的处理:this 参数如何显式声明、箭头函数为什么能锁住 this、以及回调里丢失 this 的经典错误如何被编译器提前拦下。读完本节,你能为同一个入口设计出精确的多形态签名,并彻底理解 this 在类型系统中的行为。

8 分钟阅读
TypeScript TypeScript编程入门 函数重载
typescript

《TypeScript编程入门》4.1 签名、可选参数与默认值

函数是 TypeScript 程序的基本构件,而函数签名则决定了调用方能看到什么、编译器能替你检查什么。本节从函数类型注解讲起,逐步展开参数与返回值的标注方式、可选参数与默认值的语义差异、剩余参数与参数解构的写法,并给出严格模式下的常见报错与修复思路。读完后你将能写出签名清晰、对调用方友好、且能被编译器完整校验的函数,为后面学习重载与泛型打下基础。

7 分钟阅读
TypeScript TypeScript编程入门 函数签名
typescript

《TypeScript编程入门》3.3 any·unknown·never·void 与类型断言

本节处理类型系统里的四个边界类型:any、unknown、never、void。先说明 any 为什么是「类型安全的漏洞」以及它的传染性,再讲 unknown 如何作为安全的 any 迫使你收窄,never 如何支撑穷尽性检查与永不返回的函数,void 在回调签名里的特殊地位。随后讲解类型断言 as、非空断言 !、双重断言与 satisfies 运算符的正确用法和滥用后果,并附真实报错对照。

9 分钟阅读
TypeScript TypeScript编程入门 any与unknown
typescript

《TypeScript编程入门》3.2 数组、元组与枚举

本节讲透 TypeScript 里三种「复数形态」的类型:数组、元组与枚举。先对比 T[] 与 Array<T> 两种数组写法、只读数组与多维数组,再讲元组如何用固定长度与固定位置表达「结构化的多返回值」,包括具名元素、可选元素与剩余元素。最后剖析 enum 的编译产物、反向映射与常量枚举的陷阱,并给出用 as const 对象加联合类型替代枚举的现代写法,附可运行的编译前后对照。

7 分钟阅读
TypeScript TypeScript编程入门 数组与元组
typescript

《TypeScript编程入门》3.1 原始类型与类型注解

本节从 TypeScript 的原始类型讲起,逐一介绍 string、number、boolean、null、undefined、symbol、bigint 的语义与写法,系统讲解类型注解语法与类型推断边界,说明什么时候该显式标注、什么时候该交给编译器,并用可运行代码演示严格模式空值检查与隐式 any 报错,帮助零基础读者建立「类型先写还是后写」的判断标准,为后续数组、对象与函数类型打好地基。

8 分钟阅读
TypeScript TypeScript编程入门 原始类型
typescript

《TypeScript编程入门》2.3 第一个项目:从零到运行

本节把零散知识组装成一个能跑起来的完整项目:命令行温度换算器。从创建目录、初始化 npm、安装 typescript 与 @types/node,到编写 tsconfig.json、实现参数解析、编译运行、用 npm scripts 固化流程,再到接入监听模式形成闭环。过程中会解释为什么命令行工具需要 @types/node,以及 dist 该不该提交到 Git。读完你能独立从零搭出小型项目。

9 分钟阅读
TypeScript TypeScript编程入门 第一个项目实战
typescript

《TypeScript编程入门》2.2 tsc 与 tsconfig.json 初探

本节拆开 TypeScript 编译器 tsc 与它的配置文件 tsconfig.json。先运行 tsc 观察 .ts 转成 .js 的过程,再用 tsc --init 生成配置,讲清 target、module、outDir、strict 的含义与取舍;再通过编译前后对照理解「类型擦除」,最后给出 include/exclude 的误用与报错。读完你能读懂一份 tsconfig.json。

9 分钟阅读
TypeScript TypeScript编程入门 tsconfig.json 配置
typescript

《TypeScript编程入门》2.1 安装 Node.js、TS 与编辑器配置

本节从零搭建 TypeScript 开发环境:先讲清为什么必须先装 Node.js,再对比官方安装包、nvm 与系统包管理器三种方式的取舍,逐步验证 node、npm、npx 三个命令;接着说明 TypeScript 为什么应该装成项目本地依赖而不是全局命令,并给出 VS Code 的编辑器配置建议。读完后你能拥有一套可复现、可协作的本地环境,并认识安装过程中最常见的报错与排查方法。

9 分钟阅读
TypeScript TypeScript编程入门 Node.js 环境搭建
typescript

《TypeScript编程入门》1.3 适用场景与生态版图

本节把 TypeScript 放回真实的技术版图:先给出判断「何时收益最大、何时不划算」的几条标准,再逐个巡视它的主战场——React 与 Vue 前端、NestJS 与 tRPC 后端、Deno/Bun 与边缘运行时、CLI 工具、桌面与跨端应用。你会看到 Vite、esbuild、SWC 组成的工具链分工,以及类型声明生态的成熟度信号。读完本节,你能为自己的下一个项目做出有依据的技术选型。

7 分钟阅读
TypeScript TypeScript编程入门 生态
typescript

《TypeScript编程入门》1.2 与 JavaScript 的关系(超集·类型擦除)

本节回答一个新手最容易搞混的问题:TypeScript 和 JavaScript 到底是什么关系。我们用一张集合图讲清「超集」的含义,再通过一次完整的编译对照,让你亲眼看到类型注解、interface、type 别名在产物里如何被整行抹掉,而 enum 与装饰器又为什么是例外。最后归纳类型擦除留下的三个运行时盲区,并给出对应做法。读完本节,你能准确判断哪些信息在运行时还活着、哪些只属于编译期。

7 分钟阅读
TypeScript TypeScript编程入门 超集