发布于:2021-01-31 00:00:40
0
198
0
已经发布了新版本的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。
作者介绍