發(fā)布于:2021-01-31 00:00:40
0
211
0
已經(jīng)發(fā)布了新版本的TypeScript,它對ECMAScript 6(ES6)的異步功能的期待已久的支持。ES3和ES5的未來支持計劃也已經(jīng)到位。TypeScript 1.7還包括這種輸入的多態(tài)性以及一些重大更改。
Microsoft的JavaScript擴(kuò)展TypeScript的最新版本已默認(rèn)為ECMAScript 6(ES6)目標(biāo)啟用了異步/等待。這意味著ES6生成器(例如Node v4及更高版本)現(xiàn)在將能夠調(diào)用異步方法而不會阻塞異步操作的完成。
提供了以下來自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未來版本的路線圖時,該團(tuán)隊還致力于2.0版對ES3和ES5的異步/等待支持。ES6也已添加到該--module標(biāo)志的可用選項列表中,并允許您在定位模塊時指定模塊輸出。
另一個新功能是引入了this用于創(chuàng)建流利風(fēng)格API的多態(tài) 類型。this在描述諸如Ember.js之類的庫時,該類型對于交集類型也很有效,該庫使用混合模式樣式描述繼承:
interface MyType { extend<T>(other: T): this & T; }
最后但并非最不重要的一點是,微軟團(tuán)隊向ECMAScript委員會透露,最近將求冪運算符提案移到了第三階段,并在1.7版中引入了對運算符**和**=的支持。操作符將在輸出中使用Math.pow被轉(zhuǎn)換為ES3/ES5。
重大變化
至于中斷更改,this 現(xiàn)在將類中值的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 } }
關(guān)鍵字abstract, public, protected和private是ES3中的FutureReservedWords,并且受自動分號插入(ASI)的約束。當(dāng)這些關(guān)鍵字單獨出現(xiàn)時,TypeScript從未使用過插入分號,但是現(xiàn)在,此問題已得到解決。為了避免出現(xiàn)問題,請在定義類成員時刪除關(guān)鍵字后的換行符,并避免依賴ASI。