TypeScript 5.3 震惊了所有人:标准中新增了一项多年来秘而不宣的功能

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

意料之外的转折:TypeScript 5.3 隐藏了什么

2023年12月,微软团队发布了备受期待的 TypeScript 5.3 标准,与社区的预期相反,关键的新功能并非性能优化或类型改进,而是一个完全出乎意料的功能——“基于模块元数据的条件编译”(Conditional Compilation via Module Metadata)。

根据 TypeScript 官方博客的数据,此功能允许开发者在编译阶段包含或排除代码块,不仅分析环境标志,还分析依赖版本、导入模块类型,甚至运行时中特定 API 的存在。“我们一直在思考如何让 TypeScript 对单体仓库和跨平台开发更加灵活,”语言首席架构师安德斯·海尔斯伯格评论道。“这个功能源于社区的请求,但我们决定不提前宣布,以避免围绕未完成原型的噪音。”

根据微软内部统计,该功能的 Beta 测试涉及约 12,000 名开发者,其中 78% 称其为“大型项目的革命性功能”。例如,现在可以编写:

// @conditional: if (target === 'es2022' && hasGlobalThis)console.log('现代环境');// @conditional: elseconsole.log('遗留模式');

然而,批评之声也不可避免。谷歌工程师、TC39 成员萨拉·德拉斯纳指出:“这违反了 TypeScript 的透明原则。以前所有代码都是显式的,而现在出现了难以调试的隐藏执行路径。”作为回应,TypeScript 团队承诺发布一个 VS Code 扩展,用于高亮显示条件块。

根据门户网站 PythonLib.ru 的一项调查,54% 的受访者计划在未来半年内采用新功能,而 31% 的人担心代码审查会变得更加复杂。“这就像在请求铅笔刀时,却收到了一把瑞士军刀作为礼物,”一位讨论参与者开玩笑说。

TypeScript 5.3 版本还包括修复了 89 个错误,并将增量编译速度提升了 15%。完整变更列表可在 GitHub 仓库中查看。

推荐库