【前端資訊】TypeScript 2.7 發布

本文轉自 FEPulse 公眾號(微信搜索 FEPulse,每日精選一條國內外最新前端資訊,為你把握前端脈搏)。

近日,TypeScript 2.7 發布。你可以通過 npm install -g typescript 安裝最新的版本。

下面看看有哪些更新吧~

Stricter class property checks(更嚴格的類屬性檢查)

TypeScript 2.7 引入了一個叫 "--strictPropertyInitialization" 的標誌,要求每個實例的屬性都有初始值,初始值既可以在 constructor 中設置,也可以在聲明時設置。看下面的示例:

示例中 bar 在聲明時設置了初始值,foo 在 constructor 中設置了初始值,而baz 沒有在任何地方設置初始值,所有 TS 會報錯。

需要注意的是,--strictPropertyInitialization 將與其他 --strict 模式標誌一起打開,你可以在 tsconfig.json 的 compilerOptions 中將 strictPropertyInitialization 設置為 false,或者在命令行上將 --strictPropertyInitialization 設置為 false 來關閉此檢查。

Definite assignment assertions(明確的賦值斷言)

這是 TS 的一個新的語法(在屬性名後加一個感嘆號),告訴 TS 一個類的屬性將來一定會被賦值。除了用在類屬性上,這個新語法也可以被用於變數聲明中。看個示例:

Easier ECMAScript module interoperability(更簡單的 ES 模塊互操作性)

為了給用戶提供與 Babel 或 Webpack 相同的運行時行為,TypeScript 提供了一個新的 --esModuleInterop 標誌。在新的--esModuleInterop標誌下,這些可調用的 CommonJS 模塊必須被以 default import 形式導入。

unique symbol types and const-named properties(unique symbol 類型和常量命名屬性)

TypeScript 2.7 可以更好地理解 symbol 類型,先看個示例:

例子中,TS 可以追蹤 x 的兩個屬性使用到了 symbol 類型的常量: Foo 和 Bar,在這裡 TS 給了 Foo 和 Bar 一個新的類型:unique symbol。unique symbol 是 symbol 的子類型,可以通過調用 Symbol() 、 Symbol.for() 或者顯式類型聲明來生成 unique symbol 類型的值,unique symbol 只可用於常量聲明和只讀靜態屬性上,可以看下面的正確或錯誤使用示例:

Cleaner output in --watch mode(watch 模式下更清晰的輸出)

TypeScript 的 --watch 模式現在在請求重新編譯之後清除屏幕,這可以使讀取當前編譯的信息更加容易。

Prettier --pretty output(更加人性化的錯誤輸出)

TypeScript 的 --pretty 標誌可以使錯誤信息更易於閱讀和管理,本次更新中對錯誤信息的文件、診斷信息和行號做了高亮,另外對文件名稱和位置做了格式化,以便快速跳到相應的文件中去。

Numeric Separators(數字分隔符)

TypeScript 2.7 引入了 ECMAScript 中的 numeric separator 提案,該功能允許用戶在數字之間放置下劃線(_),以便直觀地區分數字組。

Fixed Length Tuples(固定長度元組)

現在你可以為元組類型設置一個 length 值,在此之前,[number, string, string] 被認為是 [number, string] 的子類型,但這是不合理的。現在給元組加了 length 之後,這樣,賦值時就要嚴格按照 length 規定來。

in operator narrowing and accurate instanceof(「類型窄化」)

TypeScript 2.7 為類型窄化帶來了兩個新的變化。首先,instanceof 運算符現在利用了繼承鏈而不是依賴於結構兼容性,更準確地反映了 instanceof 在運行時是如何運行的。其次,in 操作符現在充當了一個 "type guard" 的角色。

Smarter object literal inference(更加智能的字面推斷)

上面的例子中,bar 對象的屬性以及屬性值的類型都是不確定的,但在運行到一定時候,TS 可以推斷出 bar 有哪些屬性以及屬性值的類型。

最後,再次邀請大家關注我們的公眾號 FEPulse,第一時間獲取我們精心整理的最新的前端資訊。


推薦閱讀:

TypeScript 2.1中的類型運算
vscode編輯器打開大項目能夠快速預覽,這是如何做到的?軟體演算法比atom做的好?
翻譯 | 開始使用 TypeScript 和 React
VS Code 1.14更新日誌
如何進一步熟悉甚至掌握Angular?

TAG:前端開發 | 前端工程師 | TypeScript |