TypeScript 1.5 进一步提升了面向 ES6 的转译特性

  • David Iffland
  • 邵思华

2015 年 8 月 5 日

话题:语言 & 开发

在 TypeScript 的上一个版本发布 7 个月之后,微软终于发布了 TypeScript 1.5,新版本朝着完全支持 ES6 的最终目标又迈进了一大步。

TypeScript 1.4 于 2015 年 1 月发布时,它的Kangax ES6 兼容性(特性实现比例)仅仅只有 8%。而 TypeScript 1.5 中加入了众多的新特性,使得其兼容性达到了 53%(截至 2015 年 7 月 26 日)。

不出所料,1.5 版本加入了对 ES6 风格的模块语法的支持。编译器已能够将模块以SystemJSUMD的语法进行输出。除此之外,开发团队还借此机会将之前版本中被命名为“内部模块”的特性更名为“命名空间”,以减少使用者的困惑。

1.5 版本还加入了对修饰符的支持,这一特性之所以能够出现在这门语言中,是开发团队与 Angular、Ember 以及 Aurelia 团队通力合作的成果。修饰符能够提供运行 Angular 2.0 应用所必需的特性,这几个团队都希望修饰符能够成为 ES7 的一部分,但目前为止,它仍然被认为是一种实验性质的特性。为了在 Angular 2.0 应用中启用这一特性,开发者需要打开—experimentalDecorators 这个编译标志。

Steve Ognibene 是Pluralsight 网站上一门有关 TypeScript 的课程的作者,他对于 1.5 版本面向 ES6 的转译功能感到十分兴奋:

TypeScript 如今已成为一个完美的 ES6 至 ES5 的转译器,使用 TypeScript 1.5 的团队不仅能够享受到那些一贯的好处,例如开发时错误提示、恰当的智能提示与文档、以及优秀的重构与代码导航功能,还能够编写使用 ES6 的特性,而实际上在当前的 ES5 环境下运行的代码。对于 ES6 风格的各种语法,TypeScript 1.5 都实现了良好的 ES5 转译,因此我能够在针对生产环境的代码中使用我最喜爱的特性,包括 let、const、解构(destructuring)、展开(spread)、剩余参数(rest)、字符串模板,以及 ES6 风格的模块语法。

有些开发者可能会对 async/await 语法的缺失感到失望。这一特性在TypeScript 路线图中目前被列为“2.0”版本中的特性之一,但在之前的修订中,它曾计划在较早的时间发布。在某篇博客的留言中,TypeScript 的程序经理Jonathan Turner特意对这一特性及其发布时间进行了回应。

我们正在对编译器进行一些重构工作,以实现 async/await 对 ES5 的支持。我们希望让编译器代码与生成的代码尽量保持整洁,因此实现这一点需要一定时间。出于以上原因,我们估计这一特性也不会出现在 1.6 版本中,因为我们希望尽快发布新的版本。

这条回复同时也暗示着下一个版本的 TypeScript 用不着再等上 7 个月那么久了,1.6 版本中计划加入的特性包括:

  • 对 JSX 的支持
  • 抽象类与方法
  • ES6 生成器

开发者们可以在最新发布的 Visual Studio 2015 中直接使用 TypeScript 1.5,也可以下载对应 Visual Studio 2013 与 npm 的版本。

查看英文原文:TypeScript 1.5 Boosts ES6 Transpilation Features

语言 & 开发