TypeScript 1.7在此处带有ES6的默认设置async / await

发布于:2021-01-31 00:00:40

0

198

0

TypeScript javascript

已经发布了新版本的TypeScript,它对ECMAScript 6(ES6)的异步功能的期待已久的支持。ES3和ES5的未来支持计划也已经到位。TypeScript 1.7还包括这种输入的多态性以及一些重大更改。

Microsoft的JavaScript扩展TypeScript的最新版本已默认为ECMAScript 6(ES6)目标启用了异步/等待。这意味着ES6生成器(例如Node v4及更高版本)现在将能够调用异步方法而不会阻塞异步操作的完成。

提供了以下来自GitHub的示例 供参考:

"use strict";   // printDelayed is a 'Promise<void>' async function printDelayed(elements: string[]) {     for (const element of elements) {         await delay(200);         console.log(element);     } }   async function delay(milliseconds: number) {     return new Promise<void>(resolve => {         setTimeout(resolve, milliseconds);     }); }   printDelayed(["Hello", "beautiful", "asynchronous", "world"]).then(() => {     console.log();     console.log("Printed every element!"); });

在查看TypeScript未来版本的路线图时,该团队还致力于2.0版对ES3和ES5的异步/等待支持。ES6也已添加到该--module标志的可用选项列表中,并允许您在定位模块时指定模块输出。

另一个新功能是引入了this用于创建流利风格API的多态 类型。this在描述诸如Ember.js之类的库时,该类型对于交集类型也很有效,该库使用混合模式样式描述继承:

interface MyType {     extend<T>(other: T): this & T; }

最后但并非最不重要的一点是,微软团队向ECMAScript委员会透露,最近将求幂运算符提案移到了第三阶段,并在1.7版中引入了对运算符**和**=的支持。操作符将在输出中使用Math.pow被转换为ES3/ES5。

重大变化

至于中断更改,this 现在将类中值的this类型推断为该类型。建议用户添加aa类型注释,例如下面的示例:

class Fighter {     /** @returns the winner of the fight. */     fight(opponent: Fighter) {         let theVeryBest: Fighter = this;         if (Math.rand() < 0.5) {             theVeryBest = opponent; // no error         }         return theVeryBest     } }

关键字abstract, public, protected和private是ES3中的FutureReservedWords,并且受自动分号插入(ASI)的约束。当这些关键字单独出现时,TypeScript从未使用过插入分号,但是现在,此问题已得到解决。为了避免出现问题,请在定义类成员时删除关键字后的换行符,并避免依赖ASI。