谷歌釋出 Dart 2.1,型別檢查更快、可用性更高
谷歌已經發布了 Dart 2.1。該版本提供了新的語言特性、效能改進、更快的型別檢查以及針對型別錯誤的更好的可用性。
Dart 2 於今年年初發布,它為移動裝置程式碼生成提供了一種新的編譯器支援、一款重新修改過的 web 平臺工具和一個健全的型別系統 (也稱為型別安全系統),以支援團隊構建複雜的應用程式。
健全的型別系統在開發過程中幫助使用者,通知開發人員何時違反了型別指定的契約。現在在 Dart 2.1 上,編輯時和編譯時型別檢查都已經完成。
Dart 2.1 改進了對 mixin 的支援。mixin 是允許開發人員在多個類層次結構中重用類程式碼的特性。
已經為 mixin 添加了一個新的語法,關鍵字 mixin 可用於定義只能作為 mixin 使用的類。
需要注意的是,新的語法混合程式阻止使用者擴充套件或構造 mixin 類。
現在,mixin 可以擴充套件其他類 (以前它們只能擴充套件物件) 並呼叫超類中的方法。
有一個擴充套件非物件類的例子,它來自於 Flutter 的動畫 animation API,其中 SingleTickerProviderStateMixin 聲明瞭一個實現通用 TickerProvider 介面的 mixin。
複製程式碼
mixinSingleTickerProviderStateMixin on State implements TickerProvider { ... }
如果開發人員希望在 mixin 中使用 super,則需要新的 mixin 語法。
複製程式碼
classSuperclass{ superclassMethod() { print("in superclass"); } } mixinSomeMixinonSuperclass{ mixinMethod() { // 可以這樣寫: super.superclassMethod(); } } classGoodSubextendsSuperclasswithSomeMixin{} classBadSubextendsObjectwithSomeMixin{} // 錯誤: 由於 mixinMethod() 中的 super() 呼叫無法找到要呼叫的父類方法 (),因此禁止這樣做。
Dart 2.1 現在可以推斷出 int 型別在哪裡可以被計算為 double,這是 Flutter 開發人員在使用 API 期望使用 double 型別的 int 型別時經常遇到的問題。
(圖片來自於 ofollow,noindex">medium.com/dartlang)
Flutter 和 web 開發人員可以從效能改進中獲益。在 Dart 2.1 中,對於 AOT 編譯的程式碼和在使用 JIT 編譯的 VM 中執行的程式碼,型別檢查的成本都降低了。根據谷歌的說法,對一個大型基準測試應用程式執行程式碼分析以前需要 41 秒,現在只需要 25 秒。此外,dart2js 縮小的輸出尺寸減少了 17%,編譯時間也快了 15%。
Dart 2.1 現在正式支援協議緩衝區。協議緩衝區是用於序列化結構化資料的與語言無關、與平臺無關的機制,支援的語言有 Java、Python、Objective-C、C++、Dart、Go、Ruby 和 C#。
可以在參考文件中找到有關協議緩衝區的更多資訊。
其他功能包括:
-
添加了 HashMap.fromEntries 和 LinkedHashmap.fromEntries 建構函式。
-
添加了操作符 / 、|、和 ^ 到布林。
-
添加了新的 HTTP 狀態碼。
-
添加了 -O 標誌來調整優化級別。請執行 dart2js -h -v 檢視更多的細節。
在變更日誌中可以找到完整的特性、缺陷修復和破壞性變更列表。
可以在 Dart 主頁上下載 Dart SDK 2.1 。對於 Flutter 開發人員來說,Dart 2.1 是 Flutter 1.0 版本的一部分。谷歌還針對 int-to-double 和 mixin 提供了一些示例。Dart 外掛可用於一系列 IDE 和編輯器,如 Android+Studio/">Android Studio、Visual Studio Code、 Intellij IDEA、Atom、Vim 以及 Emacs.
檢視英文原文: