谷歌发布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

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