posts

《TypeScript编程实战》 · 全书目录与章节索引(55 节)

《TypeScript编程实战》全 55 节,是一本 TypeScript 工程落地手册:从工程脚手架、严格模式分层与代码门禁讲起,依次覆盖错误处理与日志、测试体系、Node.js 服务端、数据访问层、缓存、消息队列与实时通信,再转入 React / Vue / Next.js 前端类型实践、构建产物治理,最后落在 API 契约、可观测性、安全加固与部署发布上。本页给出全书分章目录。

《TypeScript编程实战》全 55 节,是一本 TypeScript 工程落地手册:从脚手架与门禁讲到后端、前端、全栈契约与交付链路。

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

全书概览

项目内容
书稿《TypeScript编程实战》
章节数55 节
领域TypeScript 工程实战
阅读方式从「目录」篇进入按顺序通读,或按章节表跳读
上级专题书稿专题

全书目录

前置:序、前言与目录

节文章核心内容
—《TypeScript编程实战》目录《TypeScript编程实战》全书导航页:说明本书定位、读者画像与前置知识,给出完整通读、主线速读…

第 1 章 现代 TS 工程脚手架

节文章核心内容
1.11.1 从零搭建(pnpm / tsx / tsup)本节从空目录开始搭起可复现的 TypeScript 工程脚手架:先用 Corepack 锁定 pnp…
1.21.2 严格模式与 tsconfig 分层本节把 tsconfig.json 讲成可维护的配置:先解释 strict 总开关包含哪几项检查,再…
1.31.3 代码规范与提交门禁(ESLint / Biome / husky)本节把代码规范从口头约定变成不可绕过的自动化门禁:先对比 ESLint 加 Prettier 与 B…

第 2 章 类型安全的开发工作流

节文章核心内容
2.12.1 路径别名与 monorepo 结构本节讲清路径别名与 monorepo 结构。先用相对路径失控的场景引出 paths 与 baseUr…
2.22.2 环境变量与配置的类型化本节把环境变量与配置纳入类型系统。先讲清 process.env 的真实类型为什么是 string …
2.32.3 调试与 source map本节解决「运行时报错的行号对不上源码」这一痛点。先讲清 source map 是什么、由哪些字段组成…

第 3 章 错误处理与日志

节文章核心内容
3.13.1 Result/Either 与类型化错误本节从 throw 的类型黑洞讲起,说明 TypeScript 的函数签名为何无法表达失败路径。随后…
3.23.2 全局错误边界与未捕获异常本节讲 Result 覆盖不到的失败:Node 进程级的 uncaughtException 与 u…
3.33.3 结构化日志与脱敏本节说明 console.log 为什么在生产环境不可用,并给出结构化日志的字段约定。随后用 pin…

第 4 章 测试体系

节文章核心内容
4.14.1 Vitest 单元测试本节把单元测试落到 Vitest 上:先说明现代 TypeScript 项目为何更倾向它,再给出安装…
4.24.2 集成测试与 Testcontainers本节解决「单测全绿、上线照样炸」的问题:先讲清 mock 越多失真的原因,再引入 Testconta…
4.34.3 类型测试与覆盖率门禁本节补上测试体系的最后两个维度:类型测试用 vitest 的 typecheck 模式与 expec…

第 5 章 Node.js 服务端基础

节文章核心内容
5.15.1 HTTP 服务与路由(Fastify / Hono)本节从 Node 原生 http 模块的类型缺口讲起,对比 Fastify 与 Hono 两套框架的…
5.25.2 中间件与请求上下文本节讲解 HTTP 服务的横切关注点如何组织:从洋葱模型与 Fastify hooks 的执行顺序,…
5.35.3 优雅关闭与健康检查本节讲解服务进程如何正确地「活着」与「死去」:从 SIGTERM 信号处理、连接排空与资源释放的关闭…

第 6 章 NestJS 模块化架构

节文章核心内容
6.16.1 模块、提供者与依赖注入本节讲解 NestJS 的模块、提供者与依赖注入三件套如何协作:用 @Injectable 与构造函…
6.26.2 管道、守卫与拦截器本节讲解 NestJS 请求处理流水线里的三类横切组件:管道负责校验与转换入参,守卫决定请求能否放行…
6.36.3 配置与生命周期本节讲解 NestJS 应用的两件「非业务」大事:配置如何按环境分层、用 schema 在启动时校验…

第 7 章 数据访问层

节文章核心内容
7.17.1 Prisma schema 与类型生成本节把 Prisma 当作一条从数据库结构到 TypeScript 类型的单向流水线:写出第一个 s…
7.27.2 Drizzle 的 SQL 式类型推导本节换一条与 Prisma 相反的路线:用 TypeScript 文件本身描述表结构,让类型从查询语…
7.37.3 迁移、事务与连接池本节收束数据访问层剩下的三个难题:表结构怎么改才不锁库、并发写入怎么写才不留半成品、连接池该配多大才…

第 8 章 缓存与性能

节文章核心内容
8.18.1 缓存层次与键设计本节讲清缓存分层的工程取舍与缓存键的设计规范。先给出浏览器、CDN、进程内、Redis、数据库五层缓…
8.28.2 Redis 类型安全封装本节把裸 Redis 客户端那层 string 边界升级成编译器可检查的类型边界。先拆解键空间声明、…
8.38.3 穿透·击穿·雪崩防护本节系统拆解缓存的三种失效模式并给出可直接落地的 TypeScript 代码。先对比穿透、击穿、雪崩…

第 9 章 消息与后台任务

节文章核心内容
9.19.1 BullMQ 队列模型与 payload 泛型本节从「为什么要把工作丢进队列」讲起,拆解 BullMQ 的 Queue、Worker、Job 三个…
9.29.2 重试、幂等与死信投递成功只是开始,任务失败之后才是真正的工程量。本节先区分可重试与不可重试的失败,讲清 BullMQ…
9.39.3 定时任务与并发限流定时任务看似最简单,却最容易在多实例部署下出错。本节先对比系统 crontab、node-cron …

第 10 章 实时通信

节文章核心内容
10.110.1 WebSocket 消息协议判别联合WebSocket 是长连接,一条通道上会流动几十种语义完全不同的消息,而 JSON.parse 返…
10.210.2 SSE 与流式响应当服务端只需单向推送时,WebSocket 是过重的选择。本节讲透 SSE 的文本帧格式、id 与 …
10.310.3 心跳、重连与广播长连接上线前还有三块拼图没补齐:它会静默假死、断了要能自动恢复、单实例的订阅表在多副本部署下会失效。…

第 11 章 React 类型安全

节文章核心内容
11.111.1 组件 props 与泛型组件本节把 React 组件的 props 从随手写的对象类型升级成一份可演进的接口契约:先讲 chil…
11.211.2 Hooks 类型与自定义 Hook本节沿着 useState、useReducer、useRef、useEffect 逐个拆解 Rea…
11.311.3 Context 与状态管理(Zustand / RTK)本节解决状态离开单个组件之后的类型问题:Context 的默认值该放什么、为什么假默认值比 null…

第 12 章 Vue 与 Next.js 类型实践

节文章核心内容
12.112.1 Vue 3 组合式 API 类型Vue 3 的类型体验与 Vue 2 截然不同:ref 与 reactive 的自动解包、编译宏、d…
12.212.2 Next.js App Router 类型(Server Actions / Route Handlers)Next.js App Router 用一份 TypeScript 同时描述服务端与客户端两种运行环…
12.312.3 SSR·ISR 数据流类型类型能描述数据的形状,却描述不了数据的新鲜度,这正是 SSR 与 ISR 最容易出事的地方。本节从三…

第 13 章 表单与校验

节文章核心内容
13.113.1 React Hook Form + Zod受控表单在大表单下会因每次按键重渲染整棵树而变慢。本节从这一性能问题切入,讲清 React Hook…
13.213.2 表单类型推导与错误映射Zod 的 transform 与 default 会让 schema 的输入与输出变成两副面孔,表…
13.313.3 复杂表单与动态字段字段能增删、能嵌套、能按另一个字段的值条件出现,是表单真正开始变复杂的三个信号。本节用 useFie…

第 14 章 数据获取与状态同步

节文章核心内容
14.114.1 TanStack Query 类型推导本节先厘清服务端状态与客户端状态的分工,再拆解 TanStack Query 如何把类型从 quer…
14.214.2 乐观更新与缓存失效本节讲清写操作之后缓存该怎么改:先用 useMutation 的四个类型参数把变量、返回值、错误与上…
14.314.3 分页、无限滚动与预取本节把查询层推进到列表场景:先区分页码分页与游标分页的适用场景,再讲清 useInfiniteQue…

第 15 章 前端构建与产物

节文章核心内容
15.115.1 Vite 与 TS 集成Vite 已成为 TS 前端项目的默认构建工具,但它对 TypeScript 的态度常被误解。本节先…
15.215.2 代码分割与 tree-shaking首屏体积的敌人不是代码总量,而是「用不到的代码被提前加载」。本节先讲动态 import() 在类型层…
15.315.3 构建性能诊断与包体积治理构建变慢和包变大常常是同一批依赖的两面。本节先给出构建耗时的定位方法,用 –debug 与插件计时…

第 16 章 API 契约与端到端类型

节文章核心内容
16.116.1 tRPC 端到端类型安全本节从前后端分离项目里最常见的契约漂移讲起,说明为什么手写接口类型守不住边界。随后完整走一遍 tRP…
16.216.2 OpenAPI / GraphQL Codegen本节讲清「schema 先行」这条契约路线的完整闭环:如何从 TypeScript 服务端实现自动导…
16.316.3 契约版本演进与兼容本节讨论契约改动之后的事:先给出破坏性变更的判定清单,把「加字段安全、改语义危险」这类直觉变成可检查…

第 17 章 可观测性与安全

节文章核心内容
17.117.1 OpenTelemetry 追踪本节从日志排障的局限出发,讲清 OpenTelemetry 的 Trace、Span 与 Conte…
17.217.2 指标与告警本节讲透指标与告警这条链路:从 Counter、Gauge、Histogram 三种仪器类型的语义差…
17.317.3 依赖供应链与应用安全加固本节把视角从运行时可见性转向交付安全:先建立依赖供应链的威胁模型,再讲清 lockfile 与可复现…

第 18 章 部署与发布

节文章核心内容
18.118.1 Docker 与 CI/CD 流水线本节把 TypeScript 服务从「本地能跑」推进到「可重复交付」:先用多阶段 Dockerfil…
18.218.2 数据库迁移与灰度发布本节讲清「代码能随时回滚、数据库不能」这个不对称性带来的全部约束:先用 expand-contrac…
18.318.3 发布后验证与回滚本节把「部署完成」之后的那段时间当成发布本身的一部分:先给出冒烟、合成监控、真实用户指标、业务指标四…
全部文章 Game Golang Saas Rust 游戏开发 客户端开发 GameDev TypeScript Lua Products
typescript

《TypeScript编程实战》5.2 中间件与请求上下文

本节讲解 HTTP 服务的横切关注点如何组织:从洋葱模型与 Fastify hooks 的执行顺序,到用 AsyncLocalStorage 建立请求级上下文并贯穿日志与追踪,再到把认证结果类型安全地挂到请求对象上。你将掌握认证、校验、限流、错误收口四类中间件的写法与顺序约束,并学会避免重复执行与上下文丢失两类高频故障。

7 分钟阅读
TypeScript TypeScript编程实战 中间件
typescript

《TypeScript编程实战》5.1 HTTP 服务与路由(Fastify / Hono)

本节从 Node 原生 http 模块的类型缺口讲起,对比 Fastify 与 Hono 两套框架的路由声明、请求校验与类型推导方式。你将学会用 JSON Schema 与 Zod 让请求参数自动获得类型,用插件与分组路由组织大型服务的路由树,并理解 Web 标准 Request/Response 在边缘运行时上的取舍。读完后你能按部署形态选出合适框架,写出端到端类型安全的接口层。

7 分钟阅读
TypeScript TypeScript编程实战 Fastify
typescript

《TypeScript编程实战》4.3 类型测试与覆盖率门禁

本节补上测试体系的最后两个维度:类型测试用 vitest 的 typecheck 模式与 expectTypeOf 把类型契约纳入回归,用 @ts-expect-error 断言非法用法必须被拒绝;覆盖率门禁讲清四个指标的差异、v8 与 istanbul 的取舍、thresholds 与 perFile 配置,以及为什么覆盖率不等于正确性,最后把整套测试串进 CI 流水线。

9 分钟阅读
TypeScript TypeScript编程实战 类型测试与覆盖率门禁
typescript

《TypeScript编程实战》4.2 集成测试与 Testcontainers

本节解决「单测全绿、上线照样炸」的问题:先讲清 mock 越多失真的原因,再引入 Testcontainers,用一次性 Docker 容器拉起真实的 PostgreSQL 与 Redis,让集成测试跑在与生产同构的依赖上。内容包括容器生命周期与 globalSetup 复用、等待策略、按 worker 隔离 schema、Prisma 迁移执行与 CI 差异处理。读完你能写出可信的集成测试。

8 分钟阅读
TypeScript TypeScript编程实战 Testcontainers 集成测试
typescript

《TypeScript编程实战》4.1 Vitest 单元测试

本节把单元测试落到 Vitest 上:先说明现代 TypeScript 项目为何更倾向它,再给出安装步骤与 vitest.config.ts 最小写法;随后用汇率换算与订单支付两个例子演示 describe/it/expect 写法与 toBe/toEqual 的判等差异,并展开 vi.fn、vi.spyOn、vi.mock 三种替身与假定时器的用法。读完你能写出跑得快、报错清晰的单元测试。

8 分钟阅读
TypeScript TypeScript编程实战 Vitest 单元测试
typescript

《TypeScript编程实战》3.3 结构化日志与脱敏

本节说明 console.log 为什么在生产环境不可用,并给出结构化日志的字段约定。随后用 pino 搭一套类型安全的日志封装:child logger 绑定请求上下文、err 序列化器还原堆栈与 cause、redact 路径与自定义 serializer 做脱敏。最后讲如何把日志与 trace_id 关联、级别与采样策略,以及 JSON.stringify(error) 得到空对象等坑。

6 分钟阅读
TypeScript TypeScript编程实战 结构化日志
typescript

《TypeScript编程实战》3.2 全局错误边界与未捕获异常

本节讲 Result 覆盖不到的失败:Node 进程级的 uncaughtException 与 unhandledRejection 该怎么用;React 错误边界如何捕获渲染期异常,以及它捕获不到事件处理器与异步错误的原因;Next.js App Router 的 error.tsx 与 global-error.tsx 落点。最后给出统一的上报管线与去重、采样、flush 等实战细节。

6 分钟阅读
TypeScript TypeScript编程实战 错误边界
typescript

《TypeScript编程实战》3.1 Result/Either 与类型化错误

本节从 throw 的类型黑洞讲起,说明 TypeScript 的函数签名为何无法表达失败路径。随后手写一套零依赖的 Result/Either 判别联合:Ok/Err 构造、isOk/isErr 类型守卫、map/mapErr/andThen 组合子、unwrapOr 兜底与 fromPromise 互转。再讨论异步流程中把错误搬进类型签名的写法,并划清预期业务错误与意外异常的分工。

6 分钟阅读
TypeScript TypeScript编程实战 Result与Either
typescript

《TypeScript编程实战》2.3 调试与 source map

本节解决「运行时报错的行号对不上源码」这一痛点。先讲清 source map 是什么、由哪些字段组成,再配置 tsconfig 里的 sourceMap、inlineSources 与 declarationMap;随后给出 Node 调试的三种姿势,讨论生产环境该不该带 source map,并列出断点错位、找不到源文件等常见坑与真实报错。读完你能让断点准确落在 .ts 文件上。

8 分钟阅读
TypeScript TypeScript编程实战 调试与 source map
typescript

《TypeScript编程实战》2.2 环境变量与配置的类型化

本节把环境变量与配置纳入类型系统。先讲清 process.env 的真实类型为什么是 string 或 undefined,再依次给出三档方案:手写声明合并、Zod 启动时校验加类型推导、以及多环境文件的分层加载。随后讨论密钥不进仓库、构建期变量与运行期变量的区别,并列出配置项缺失、布尔值被解析成字符串等常见坑与真实报错。读完你能写出一份启动即校验、类型自动推导的配置模块。

9 分钟阅读
TypeScript TypeScript编程实战 环境变量与配置类型化
typescript

《TypeScript编程实战》2.1 路径别名与 monorepo 结构

本节讲清路径别名与 monorepo 结构。先用相对路径失控的场景引出 paths 与 baseUrl 的编译期别名,再拆解别名运行时失效的根本原因,给出 tsc-alias、打包器 alias、Node subpath imports 三种补救方案;随后用 pnpm workspace 与 project references 组织多包仓库。读完你能设计一套可编译、可运行、可发布的目录结构。

9 分钟阅读
TypeScript TypeScript编程实战 路径别名与 monorepo
typescript

《TypeScript编程实战》1.3 代码规范与提交门禁(ESLint / Biome / husky)

本节把代码规范从口头约定变成不可绕过的自动化门禁:先对比 ESLint 加 Prettier 与 Biome 两套方案的取舍,再用 flat config 写出带类型感知的 typescript-eslint 配置,然后用 husky 与 lint-staged 把检查挂到 pre-commit,用 commitlint 约束提交信息,最后在 CI 里跑全量校验兜底。

8 分钟阅读
TypeScript TypeScript编程实战 提交门禁
typescript

《TypeScript编程实战》1.2 严格模式与 tsconfig 分层

本节把 tsconfig.json 讲成可维护的配置:先解释 strict 总开关包含哪几项检查,再补齐 noUncheckedIndexedAccess、exactOptionalPropertyTypes 等护栏,然后梳理 module 与 moduleResolution 的联动,最后用三层 extends 把编辑器检查与产物构建分开。读完你能判断每个选项该开还是该关,并看懂常见报错。

9 分钟阅读
TypeScript TypeScript编程实战 tsconfig 严格模式
typescript

《TypeScript编程实战》1.1 从零搭建(pnpm / tsx / tsup)

本节从空目录开始搭起可复现的 TypeScript 工程脚手架:先用 Corepack 锁定 pnpm 版本并说明它比 npm 快在哪里,再设计 src 与 dist 的目录结构和 package.json 关键字段,然后用 tsx 负责开发期直接运行 TS,用 tsup 负责生产构建。读完你能得到 dev、build、typecheck 三条脚本,并知道每个工具为什么被选中、常见报错怎么排查。

8 分钟阅读
TypeScript TypeScript编程实战 pnpm 工程脚手架
typescript

《TypeScript编程实战》目录

《TypeScript编程实战》全书导航页:说明本书定位、读者画像与前置知识,给出完整通读、主线速读与当参考手册查阅三条学习路径及一份十周计划,按四个部分列出 18 章 54 节的完整章节索引,每节附一句话说明,另含各部分之间的依赖关系、十个常见问题入口与延伸阅读专题清单,方便按需定位、跳读与长期查阅。

18 分钟阅读
TypeScript 《TypeScript编程实战》 目录