4万字《腾讯云技术实践精选集 2021》发布,点击下载 了解详情
写点什么

谷歌发布 Dart 2.1,类型检查更快、可用性更高

  • 2018 年 12 月 01 日
  • 本文字数:1419 字

    阅读完需:约 5 分钟

谷歌发布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 类型时经常遇到的问题。



(图片来自于 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


相关推荐:


12 月 7 日北京 ArchSummit 全球架构师峰会上,来自 Google、Netflix、BAT、滴滴、美团 等公司技术讲师齐聚一堂,共同分享“微服务、金融技术、前端黑科技、智能运维等相关经验与实践。详情点击 https://bj2018.archsummit.com/schedule


2018 年 12 月 01 日 14:211279

评论 1 条评论

发布
暂无评论
发现更多内容

【逆向分析】快速查找指定代码的几种方法

H

网络安全 逆向分析

Spring 如何解决循环依赖问题?

💥 玩命不玩心💥

JVM到底该学些什么?

蝉沐风

JVM 虚拟机 学习路线

NFT元宇宙热门游戏开发(仿盘定制)

NFT元宇宙平台开发

区块链游戏 NFT 元宇宙 gamefi

政法委重点人员联防联控平台开发,跨部门大数据系统搭建

电微13828808271

区块链数字藏品平台开发,区块链+数字藏品激活传统文创

电微13828808271

阿里云贾少天:大规模云服务器高效使用及管理实践

阿里云弹性计算

阿里云 云栖大会 云上运维

查收新年礼物 | DevEco Studio 3.0 Beta2发布,20个新变化,等你升级

HarmonyOS开发者社区

HarmonyOS

科尼数字科技张彬:云设计系统助力行业数字化转型

阿里云弹性计算

阿里云 弹性计算 年度峰会

年度盘点|每一个ToB产品都值得被看见

ToB行业头条

web技术分享| css filter和getUserMedia的联合使用

anyRTC开发者

CSS 前端 Web 音视频 WebRTC

Mecha《机甲变形》元宇宙链游开发模型分析

NFT元宇宙平台开发

区块链游戏 NFT 元宇宙

LigaAI 2021年终总结

LigaAI

团队管理 技术 成长笔记】 年度总结

悄悄告诉你,有种管理方法能让设计团队学习、产出两不误!

LigaAI

效率 技术

龙蜥社区2021年度运营委员会会议顺利召开

OpenAnolis小助手

龙蜥社区

今晚直播:展望2022,操作系统将走向何方?

OpenAnolis小助手

操作系统 国产操作系统 龙蜥社区

找出数组中出现次数超过一半的数字

zdd

算法题

架构实战 - 模块八

唐敏

「架构实战营」

Linux之find命令的参数详解

入门小站

Linux

在线JSON转HTML工具

入门小站

工具

基于区块链和web3.0的全新社交协议Coo Social首发上线虎符创新区

区块链前沿News

Hoo 虎符交易所 coo web3.0

DevEco Device Tool 3.0 Beta2新版本发布,新增可视化Trace工具和Perf性能分析工具

HarmonyOS开发者社区

OpenHarmony

谷歌发布Dart 2.1,类型检查更快、可用性更高-InfoQ