歡迎您光臨本站 註冊首頁

Optional Chaining 特性進入 Stage 3,TypeScript 跟進

←手機掃碼閱讀     admin @ 2019-07-29 , reply:0

TypeScript 項目開發團隊負責人 Ryan Cavanaugh 最近重新打開了多年前的一個 issue ,以慶祝 TypeScript 的 Optional Chaining(自判斷屬性鏈)特性進入第三階狀態(Stage 3)。

其實是 JavaScript 標準 TC39 將該特性草案演進到了 Stage 3:

提案地址:https://tc39.es/proposal-optional-chaining

就像 Ryan 說的,Optional Chaining 特性主要用於保護出現在屬性路徑中 null 和 undefined 值,像 C# 等語言中已經有用於訪問屬性鏈的語法糖,可以在對象層次結構中的任何地方處理遇到的 null 和 undefined 情況,使它可以正常執行,而不會拋出錯誤。

具體來講,在向樹狀結構深處進行屬性值訪問時,通常需要檢查中間節點是否存在:


var street = user.address && user.address.street;

許多 API 返回一個對象或 null/undefined,並且可能只想在結果不為 null 時從結果中提取屬性:


var fooInput = myForm.querySelector('input[name=foo]')
var fooValue = fooInput ? fooInput.value : undefined

Optional Chaining 運算符允許開發人員直接用簡單的方式處理這種情況,而不用進行重複性操作,或者在使用臨時變數分配中間結果:


var street = user.address?.street
var fooValue = myForm.querySelector('input[name=foo]')?.value

因為是保護訪問屬性鏈時的 null 與 undefined,所以 Optional Chaining 運算符也叫做「安全導航運算符」,TC39 標準中給出的該運算符是「?.」,它的語法可以適用於三種場景:


obj?.prop       // 自判斷靜態屬性訪問
obj?.[expr]     // 自判斷動態訪問
func?.(...args) // 自判斷函數或方法調用

進入 Stage 3 的提案,也就意味著該提案基本已經完成,目前處在 RC 階段,接下來就是針對一些社區反饋的問題進行跟進,之後發布正式該特性,預計 TypeScript 3.7 中將正式將 Optional Chaining 引入。

關於 Optional Chaining 的更多內容,查看:

https://github.com/tc39/proposal-optional-chaining


[admin ]

來源:OsChina
連結:https://www.oschina.net/news/108603/optional-chaining-is-stage-3
Optional Chaining 特性進入 Stage 3,TypeScript 跟進已經有196次圍觀

http://coctec.com/news/soft/show-post-211082.html