JavaScript 的超集——静态类型系统、强大的类型推断与高级类型运算,让大型项目可维护
TypeScript 由微软工程师 Anders Hejlsberg(同时也是 C# 之父)于 2012 年创造,作为 JavaScript 的静态类型超集。它完全兼容 JS——所有合法的 JS 代码也是合法的 TS 代码,TypeScript 只是在 JS 之上增加了类型系统。
JavaScript 的动态类型在小项目中是优势,但在大型代码库中会引发问题:你无法确定一个函数接收什么参数、一个对象有哪些属性,IDE 补全提示残缺,重构时容易遗漏修改点,错误只在运行时才暴露。TypeScript 解决了这一切——在编译时就发现类型错误,让 IDE 提供精准的智能提示,让代码成为自我文档化的文档。
如今,TypeScript 已成为前端工程化的标准配置:React、Vue 3、Angular、NestJS、Prisma 全部用 TS 编写,Next.js、Nuxt 开箱即用 TS 支持。掌握 TypeScript 是现代前后端开发者的必备技能。
TypeScript 让 JavaScript 在大型项目中依然可控
大多数情况下无需手动写类型,TypeScript 从赋值和用法中自动推导,减少冗余。
泛型函数与接口,让代码在保持类型安全的同时具备最大的复用性。
string | number 联合类型、A & B 交叉类型,精确描述复杂的数据形状。
Mapped Types、Conditional Types、Template Literal Types,类型级别的编程能力。
Stage 3 装饰器提案,NestJS/TypeORM 等框架的基础,优雅的元编程方式。
.d.ts 声明文件与 @types/ 包,为第三方 JS 库提供完整的类型信息。
10 章系统掌握 TypeScript,从基础到高级类型运算
Anders Hejlsberg 与 TypeScript 诞生(2012)、JS 动态类型痛点、tsc 编译过程、结构化类型系统(duck typing)、安装与第一个 .ts 文件。
string/number/boolean/null/undefined/symbol/bigint、any 的危险性与 unknown 的安全替代、never 类型、数组、元组、联合、交叉、字面量类型。
interface 声明对象形状、可选属性、readonly、索引签名、接口继承、type 别名、interface vs type 的本质区别、声明合并。
泛型函数、泛型接口、泛型类、extends 约束、keyof 操作符、ReturnType/Parameters 等内置工具类型、泛型默认值、类型安全的事件系统实战。
typeof/instanceof 保护、自定义类型谓词 is、可辨识联合(discriminated union)、in 操作符、as 类型断言、非空断言 !、satisfies 操作符(TS 4.9)。
Mapped Types 映射类型、内置工具类型全解(Partial/Required/Pick/Omit/Record 等)、Conditional Types、infer 关键字、Template Literal Types、递归类型。
ES modules vs CommonJS、import type、.d.ts 声明文件原理、@types/ 包、declare module/global、paths 路径别名、moduleResolution 策略详解。
核心字段(target/module/lib/strict/outDir)、strict 模式 7 个检查项、项目引用(composite)、tsc --noEmit 类型检查、ts-node/tsx/esbuild/SWC 的选择对比。
装饰器提案(Stage 3)、新旧装饰器差异、类/方法/属性/参数装饰器、reflect-metadata、NestJS 装饰器实例、TypeORM Entity 装饰器、装饰器工厂模式。
Express + TypeScript 类型化 Request/Response、Zod 运行时验证 + 类型推导、类型安全的 Router、错误处理中间件、环境变量类型化、完整 REST API 示例。