7 月 30 日消息,Node.js 开发团队在 7 月 25 日合并了“为 TypeScript 添加实验性支持”的 Pull Request 拉取请求页面,旨在让 Node.js 开发者可以通过配置实验性 flag 直接执行 TypeScript 文件。不过此举引发争议,大量用户认为这将导致 Node.js 降低稳定性,相关页面甚至因为言论过激一度被锁定。
据悉,TypeScript 是微软基于 JavaScript 开发的编程语言,相对 JavaScript,其支持静态类型系统,可以提升代码安全性及运行效率。而原本以 JavaScript 为基础的 Node.js 要支持 TypeScript 需要进行一系列转译理,在转译过程中 TypeScript 特有的类型会被丢弃(注:即“类型剥离”,Type Stripping)。
许多开发者认为相关类型剥离操作“并不简单”,需要完整的 TypeScript 语法解析器才能实行,但 TypeScript 语法又不断变化,因此 Node.js 添加 TypeScript 实验性支持的行为反而降低了语言稳定性,还有可能导致未来用户需要不断更新 Node.js 版本才能支持 TypeScript 的所有功能。
而 Node.js 开发团队则回应称他们添加 TypeScript 实验性支持是为了照顾“社区需求”,相关改进“是推动 Node.js 生态系统发展以及未来提供原生支持 TypeScript 的重要一步”,令加载 TypeScript 文件更为便利,而不需要安装依赖项 / 专有加载程序。
Node.js 开发团队同时表示,他们早已与社区就进行一轮讨论,会在保持稳定、高性能的前提下实现类型剥离方案,目前 Node.js 开发团队倾向于以解耦的方式分发独立包令其获得实验性 TypeScript 支持,这样既能维持 Node.js 核心稳定,也能够保证其持续发展。