谷歌已经发布了 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类型时经常遇到的问题。
(图片来自于 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.
查看英文原文: