微软最近发布了 TypeScript —— 这个 JavaScript 超集的语言的 1.7 版本,新版本兑现了微软的部分承诺,使某些场景中的编程工作更为简便了。
新版本中最受期待的特性就是对 async/await 语法的支持,目前对于以 ES6 为目标的项目已经可以使用该语法了。async/await 语法允许开发者将某个函数标记为 async,通过在异步函数中使用 await 关键字,开发者就能够以调用同步代码的形式调用异步函数了。目前为止,该语法仅能够用于 ES6,因为语法的实现背后使用了代码生成器。
出于该特性的复杂性,直到 2.0 版本发布之前,以 ES5 为目标的代码都无法使用这一语法。在另一篇博客中,微软表示对该语法的支持是一个巨大的变动:
为了支持各种浏览器,我们必须使用状态机的方式,将 ES6 的代码生成器函数重写为能够在 ES5 中运行的 JavaScript。这一任务是一项艰巨的挑战,它需要对编译器代码进行大量的改动,但我们目前正致力于实现它。
如果开发者希望现在就能够在所有浏览器中应用这一特性,可以选择使用 Babel 。
微软在新版本中还引入了多态的 this 类型,使用它能够更方便地编写 fluent 风格的代码,如下所示:
var result = myObject.doSomething().doSomethingElse();
按照微软的描述,“this 类型可用于类与接口中,用于表现包含类型的某个子类型(而不是包含类型本身)。”如果想详细了解这一特性的应用方式,请查阅 TypeScript 的 Wiki 。在 Hacker News 上的讨论中,用户 tlarkworthy 对于此特性表现出了极大的热情:
在进行泛型编程时,你可能会遇到“无法在类型列表中两次引用同一个类型”的问题,此时多态的 this 类型就能够派上大用。自从接触过它之后,我已经在许多场合中应用过它了。它能够解决许多问题,例如实现一个 clone 方法。这个新特性太棒了!
开发者可以通过 npm、Visual Studio 2015 Update 1 或 Visual Studio 2013 安装 TypeScript 1.7。
评论