00:24:00
核心突破:
2016 年 State of JS 调查显示,仅小部分开发者使用 TypeScript,34% 受访者表示不感兴趣。2023 年数据发生逆转:91% 开发者使用 TypeScript,仅 9% 坚持纯 JavaScript。Stack Overflow 2023 调查更将 TypeScript 列为第五大流行语言,npm 日下载量达 1200 万次,生态地位已不可撼动。
Node.js 维护者长期面临 TypeScript 集成需求,但存在多重技术障碍:
TypeScript 每个 minor 版本都可能含破坏性变更,而 Node.js LTS 需提供三年稳定支持,版本锁定机制不可行。
Node.js 无配置文件设计原则与 TypeScript 强依赖 tsconfig.json 的矛盾难以调和。
TypeScript npm 包体积达 24MB,直接嵌入 Node.js 会引发依赖管理和尺寸问题。
CommonJS/ESM 互操作性未完善前,集成 TypeScript 将导致运行时不可预测行为。
2023 年,Node.js TSC 成员 Matteo Collina 提出创新方案——类型剥离(Type Stripping):
示例:const message: string = "Hello" → 剥离为 const message = "Hello"
技术方案依赖两大核心组件:
限制项 | 解决方案 |
---|---|
必须显式文件扩展名(.ts) | 使用 TS 5.7+ 路径重写功能或 codemod 迁移工具 |
不支持 node_modules 内的 TS 文件 | 设计上避免破坏现有模块生态 |
不降级新语法(如装饰器) | 依赖目标 Node.js 版本的 V8 支持 |
在 Node.js 22 LTS 版本取消实验性标志,持续优化编译性能
Node.js 24 将原生 TypeScript 支持升级为稳定功能
TypeScript 团队已推出 erasableSyntaxOnly 编译选项,与 Node.js 行为对齐,开发者可通过 tsconfig 提前验证代码兼容性。
本文基于 Node.js TSC 成员 Matteo Collina 在 Node Congress 的演讲整理,技术方案已落地于 Node.js 22.6+。开发者可通过 node --experimental-strip-types file.ts 立即体验。