乐趣区

关于javascript:微软提议对-JavaScript-进行重大修改将添加类型标注Type-Annotations

近日,微软发表了一个雄心勃勃的我的项目 —— 正在反对并单干一项初始“阶段 0”的提案:将可选的 Type Annotations(类型标注)增加到官网 JavaScript 规范 ECMAScript 外面。

据微软官网信息显示:“该提议旨在使开发人员可能向 JavaScript 代码中增加类型标注,容许 JavaScript 内部的类型查看器查看这些正文,且在运行时,JavaScript 引擎会疏忽它们,将类型视为标注。”

以上提议的目标是让开发者可能在不进行任何编译的状况下就能运行用 TypeScript、Flow 及其他动态类型的 JavaScript“超集”编写的程序(如果它们停留在语言的某个相当大的子集内的话)。

3 月 9 日,在 TypeScript 高级项目经理、微软 Daniel Rosenwasser 撰写的一篇博客文章中,对以上提案进行了全面解释。如果该提案持续往前推动的话,可能须要数年工夫。

博文中解释称,此次提案与最近的趋势无关,即更快的 JavaScript 迭代、更少的构建步骤,这些趋势都正在使 JavaScript 编码变得更快、更简略。同时,这一趋势也失去了古代 evergreen 浏览器的推动,这些浏览器通常不再要求开发人员编译新版本的 JavaScript,以便在较旧的运行时上运行。

正如后面的倡议所指出的,本次提案中语法的作用相似于正文,因而不会影响四周代码的运行形式。这一点在下面 Daniel Rosenwasser 的博文中也有所解释:

“这个提议的想法是,JavaScript 能够为引擎齐全疏忽的类型创立一组语法,但 TypeScript、Flow 等工具能够应用这些语法”,“这使咱们可能保留开发者喜爱的 TypeScript 的货色——它的类型检查和编辑体验,同时打消开发中构建步骤的须要。”

在此次新计划中,当波及到编写和运行代码时,开发人员的外部循环如下图所示:

因为 JavaScript 的 type syntax 之前就曾经呈现过,且开发人员对任何此类性能的工作形式都有许多不同的认识,因而许多细节还没有具体化。

对此,Daniel Rosenwasser 补充称,至多须要为以下内容增加语法:

  • 变量和函数的类型正文
  • (可选)modifiers(?)参数和类成员
  • 类型申明(接口和类型别名)
  • 类型断言运算符(as 和!)

只管可见性 modifiers 等其余结构(如 public、private 和 protected)也可能在范畴内,但 enums、namespaces 及 parameter properties 等其余结构并不在范畴内,因为它们具备可察看的运行时行为。

Daniel Rosenwasser 示意,“这些性能能够依据反馈作为独自的 ECMAScript 性能提出,但咱们目前的指标是反对 TypeScript 的一些大子集,咱们认为这些子集可能是 JavaScript 的一个有价值的补充。”

据悉,该提案将在行将于 2022 年 3 月召开的 TC39(“指定 JavaScript”)全体会议上提出。

TC39 是由 JavaScript 开发人员、实现人员、学者及相干人士独特组成的委员会,他们与社区单干保护和倒退 JavaScript 的定义,心愿从“第 0 阶段”跳到“第 1 阶段”。

Rosenwasser 强调称:“达到第 1 阶段意味着规范委员会认为反对 type syntax 对于 ECMAScript 是值得思考的”。“这并非一件必定会引起轰动的事件,委员会外部有许多有价值的观点,咱们的确心愿会有一些狐疑。像这样的提案会失去很多反馈和适当的审查,所以它可能会波及很多设计变更,可能须要数年能力产生后果。”

“但如果咱们实现这所有,咱们就有机会对 JavaScript 世界做出最有影响力的改良之一。咱们对此感到兴奋,心愿你们也感到兴奋。”

退出移动版