TypeScript 教程 · 入门导览
给 Java / 后端工程师的 TypeScript 系统入门
基于 TypeScript 6.0(2026-03)· 概念为主 · 约 2 小时 · 代码为说明性片段,行为已对照 TS 语义核对(标 ✗ 处是故意演示的编译/运行错误,非笔误)。本教程不是 API 速查,而是帮你装上一套关于「类型在 TS 里到底是什么」的心智模型。
·适合谁
这份教程为已有静态类型语言经验、但没系统写过 JS/TS 的工程师写。三条前置能力:
- 能读写 Java(或 C# / Kotlin / Go 等)后端代码,理解类、接口、泛型、异常这些概念。
- 知道「静态类型」「编译期检查」是什么,用过 IDE 的类型提示与重构。
- 没有系统写过 JavaScript——对它的运行时(
null/undefined、真值判断、this、原型、异步)不熟悉,甚至有点怕。
第三条很关键:TypeScript 是 JavaScript 的超集,TS 的一半难点其实是底下那层 JS 运行时。整份教程会反复用「TS 类型 vs Java 类型」做对照,把你已有的 Java 直觉,一条条校准到 TS 上——哪些能照搬,哪些会害你。
·不适合谁
- 完全的编程新手(没写过任何带类型的语言)——本教程默认你已经懂类型、泛型、接口。先学一门基础语言更划算。
- 已熟练写 JS/TS、想钻类型体操的人——条件类型、映射类型、模板字面量类型的深水区不在这里。去看 type-challenges 和《Effective TypeScript》。
- 只想查某个 API 怎么写——直接看 官方 Handbook 更快。
·读完之后你能做到什么
这份教程想给你的,是一个有五年经验的工程师都未必从官方文档里直接读到的东西:
把 TS 的类型系统看成一层「编译期、按结构匹配、运行时被擦除」的图纸——一旦装上这个模型,as 为何不做检查、为何要用 zod 校验外部数据、enum 为何特殊、泛型在运行时为何是空的,都不再需要死记,而是同一条原理的推论。
具体地,读完你能:
- 给一段无类型的 JS 加上正确的类型注解,并说清哪些该手写、哪些该交给类型推断。
- 判断两个类型能不能互相赋值——用结构规则推,而不是看它们叫什么名字。
- 在
interface/type、any/unknown、enum/ 字面量联合之间,按场景选对。 - 说出一段 TS 编译成 JS 后「运行时还剩什么」,并据此判断
instanceof、反射这类操作能不能用。 - 配置
strict模式,并讲清它打开了哪些检查、各自防住哪种错误。
一句话本质 · 整篇教程的核心
TypeScript 的类型是一层只存在于编译期、按「结构形状」匹配的图纸;代码真正跑起来之前它会被完全擦除——「类型世界」和运行时的「值世界」是两个分开的世界。
对 Java 开发者,这一条最反直觉:你习惯了「类型按名字/继承认定 + 运行时有反射」,TS 两条都反过来。下文所有看起来奇怪的设计,都从这一条推得出来。
这份教程读起来会很顺,因为概念都拆小了。但「读着顺」不等于「学会了」。认知科学(Bjork)把这叫流畅幻觉——当下表现好,不代表记得住、用得上。出现下面三种感觉冒出来时,请停下来做自测:
· 「我读得很顺」——那是熟悉感,不是掌握。熟悉的字面 ≠ 能自己推导。
· 「我做题很快」——多半碰上的是套路题型,换个壳就卡。
· 「我没卡壳」——多半是还没碰到真正的难点(结构化、擦除)。
每章末尾的 self-check 和第 3 章的判别题,是用来戳破这层幻觉的。先合上教程作答,再展开对照——直接看答案等于把题目当正文又读了一遍。
·概念地图
下面这张图是整份教程挂载细节的骨架。第 1 章讲左右两框里的零件,第 2 章讲中间那条「擦除边界」为什么存在、代价是什么。
tsc 编译为边界。注意三件事:① 所有类型构造都只在左框;② 左框在编译后整体消失,运行时只剩右框的 JS;③ enum 是少数会「漏」到右侧、编译成真实 JS 对象的类型语法——记住这个例外,第 2 章会专门讲它为什么特殊。·学习路径建议
顶部那条 00 — 01 — 02 — 03 面包屑就是主线,每章开头都会重画并高亮当前位置。按目标可以走不同路线:
- 只想理解类型系统在干什么:第 1 章(概念)→ 第 2 章前半(结构化 + 擦除两节)。约 1 小时。
- 要在团队里做选型 / code review(比如定
interface还是type、要不要用enum):第 1 章 §1.4–§1.5 + 第 2 章全章 + 第 3 章判别题。 - 要能读懂别人写的 TS 代码:第 1 章全章(重点 §1.8 收窄)→ 第 2 章 §2.2 擦除 → 第 3 章。
·目录
·学完之后
这份教程止步于「语言基础」。装上这套模型后,下一步按你的方向选:
- 类型进阶——条件类型、映射类型、
infer、工具类型源码。在「按结构匹配」之上加「类型层面的编程」。 - 运行时校验——zod / valibot。把「擦除」这一课补上:外部数据进系统时如何重建类型保证。
- 工程化——
tsconfig深配置、monorepo、tsx/打包器、声明文件.d.ts编写。把单文件的类型知识扩展到真实项目。 - 框架方向——Node 后端(Express/Nest)、React 前端、或 AI Agent SDK。它们都是 TS-first,结构化 + 泛型在这里大量出现。