微軟最近發(fā)布了TypeScript 2.0,該版本提供了簡化的聲明文件獲取、Non-nullable類型,以及Readonly修飾符。
TypeScript項目經(jīng)理Daniel Rosenwasser稱,他們團隊對于該版本“緊隨ECMAScript規(guī)范,為JavaScript庫和工具提供了更廣泛的支持,并通過一個語言服務(wù)在各大編輯器中提供了一流的編輯體驗”感到極為“興奮”。
TypeScript 2.0使得開發(fā)者可以更容易地獲取并使用聲明文件。Rosenwasser承認“學(xué)習(xí)如何獲取和管理聲明文件的依賴性”過去一直是用戶最頭疼的問題,但在2.0版中通過npm install --save @types/lodash命令即可安裝范圍包@types/lodash,隨后當(dāng)開發(fā)者的程序中任何位置導(dǎo)入Lodash后,TypeScript 2.0將能自動引用。
Non-nullable類型是2.0版引入的另一個新功能。雖然該語言最初的設(shè)想是所有類型始終為Nullable的,但實際上該團隊也發(fā)現(xiàn),這樣的設(shè)計并不能預(yù)防null/undefined問題。在此次發(fā)布的新版中,null和undefined均有自己的類型,借此開發(fā)者可以明確表示何時可接受null/undefined值。下列視頻展示了TypeScript的這一特性。
插入一個視頻:https://msdnshared.blob.core.windows.net/media/2016/09/nonnullable-types-fade.mp4
TypeScript 2.0中的屬性可聲明為只讀的,隨后所有不包含Set-accessor的Get-accessor均會被視作只讀的。
class Person { readonly name: string; constructor(name: string) { if (name.length < 1) { throw new Error("Empty name!"); } this.name = name; }}// Error! 'name' is read-only.new Person("Daniel").name = "Dan";整個社區(qū)對微軟此次發(fā)布的新版給予極高評價。Ed Rochenski在HackerNews報道中表達了自己的意見:
我已經(jīng)迫不及待想要在我們的生產(chǎn)應(yīng)用中使用這些新功能了。TypeScript一直是我步入JavaScript開發(fā)的橋梁,IMHO JavaScript早已被廢棄,真不知道如果沒有TypeScript的話我能否繼續(xù)堅持使用JavaScript來開發(fā)。
Non-nullable類型、可加標簽的Union類型,以及更簡單的聲明文件,這些是新版中最讓我激動的功能。
在Rosenwasser的博客文章中,用戶Allen通過評論問到:“我很想在自己的代碼庫中使用strictNullChecks,但能否通過什么方法讓某些/全部庫類型定義繼續(xù)使用lax null檢查?”據(jù)稱他在配合外部類型定義使用strictNullChecks時遇到了問題,因為所用庫的類型定義并非嚴格Null safe的。
Rosenwasser回應(yīng)稱:“目前需要針對strictNullChecks創(chuàng)建依賴項,雖然很多第三方.d.ts文件不受影響可以繼續(xù)使用,但如果遇到問題,可以隨時向types-2.0分支的DefinitelyTyped發(fā)送Pull請求。”
根據(jù)路線圖的介紹,TypeScript還支持ES8對象屬性的Spread和Rest,以及函數(shù)表達式/箭頭函數(shù)的裝飾器(Decorator),并可支持節(jié)點注冊鉤子。自TypeScript 1.8以來完整的改進和變更清單可訪問該項目的GitHub頁面。
TypeScript已通過Apache許可方式開源并發(fā)布。有意參與該項目的InfoQ讀者可訪問:https://github.com/Microsoft/TypeScript/blob/master/CONTRIBUTING.md。
查看英文原文:TypeScript 2.0 Released