微软提议为 JavaScript 原生增加类型标注

微软日前提出了一项新的提案,在提案中希望可以为 JavaScript 带来可选的类型语法,该提案可能会使 Ja…

微软日前提出了一项新的提案,在提案中希望可以为 JavaScript 带来可选的类型语法,该提案可能会使 JavaScript 原生自带 TypeScript 的一些特性,使 TypeScript 语言更快、更容易使用。

具体而言,该提案要求将类型标注(Type Annotations)添加到 JavaScript 代码中,允许类型标注被外部类型检查器检查。在运行时,JavaScript 引擎会忽略这些标注并将这些类型视为注释。该提案要求 JavaScript 为类型划出一套语法,JavaScript 引擎将忽略这些语法,但 TypeScript、Flow 等工具可以使用。这项建议将为 ECMAScript 增加可选的类型语法。

该提案的目的是让开发者能够运行用 TypeScript、Flow 或其他静态类型的 JavaScript 超集所编写的程序,而不需要转译。微软在公告中表示,新的语法将有效地起到注释作用,而不会改变代码的运行方式。

微软在提案中还表示,在过去十年中,静态类型检查的案例已经被证明相当成功。对 JavaScript 的大量投资(如微软 TypeScript、Google Closure Compiler 和 Facebook Flow)为在 JavaScript 中声明和使用类型提供了方便的语法,并获得了在其他静态类型语言中所看到的生产力的提高。它们的语法大多不会影响运行时的语义,实际上将这些变体转换为普通的 JavaScript 的大部分工作都是在删除类型。

此外在 2020 和 2021 年的 JS 调查中,静态类型也一直是 JavaScript 开发者强烈要求的一个功能。

类型语法在 JavaScript 中的兴起与下层编译(或称转译)的兴起相吻合。因为类型语法在 JavaScript 中没有得到原生支持,所以必须有一个工具能够在运行代码之前删除这些类型。对于像 TypeScript 和 Flow 这样的类型系统来说,将类型清除步骤与语法降级相结合是有意义的,这样用户就不需要运行单独的工具。

这个提案将减少对构建步骤的需求,使一些开发设置变得更加简单,用户将可以更加简单地运行他们编写的代码。

微软在提案中并没要求将 TypeScript 的类型检查放在每个浏览器和 JavaScript 运行时中,也没要求在浏览器中放置一个新的类型检查器。微软认为这将给 JavaScript 和 TypeScript 用户带来运行时的性能和兼容性问题,也有可能阻止创新。目前该提案还处于 Stage 0 阶段,更多提案内容可查看微软。

关于作者: qwephp

.

为您推荐