谷歌發佈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。

mixin SingleTickerProviderStateMixin on State implements TickerProvider {
  ...
}

如果開發人員希望在mixin中使用super,則需要新的mixin語法。

class Superclass {
  superclassMethod() {
    print("in superclass");
  }
}

mixin SomeMixin on Superclass {
  mixinMethod() {
    // 可以這樣寫:
    super.superclassMethod();
  }
}

class GoodSub extends Superclass with SomeMixin {}

class BadSub extends Object with SomeMixin {}
//錯誤:由於mixinMethod()中的super()調用無法找到要調用的父類方法(),因此禁止這樣做。

Dart 2.1現在可以推斷出int類型在哪裏可以被計算爲double,這是Flutter開發人員在使用API期望使用double類型的int類型時經常遇到的問題。

image(圖片來自於 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、Visual Studio Code、 Intellij IDEA、Atom、Vim 以及Emacs.

查看英文原文:

https://www.infoq.com/news/2018/11/dart-2-1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章