📜  Dart – 类型系统

📅  最后修改于: 2021-09-02 05:30:27             🧑  作者: Mango

Dart编程语言被认为是类型安全的,这意味着它通过静态类型检查和运行时检查的组合确保变量的值始终与变量的静态类型匹配。它也被称为声音打字。在编译时调试代码时它会派上用场。

所有形式的静态错误都可以通过在泛型类中添加类型注解来解决。 下面列出了一些常用的泛型集合类:

  • 列表
  • 地图

示例 1:以下代码将在调用 printInts(list) 时在 list 上引发错误。

Dart
void printInts(List x) => print(x);
  
void main() {
  var list = [];
  list.add(1000);
  list.add(2000);
  printInts(list);
}
}


Dart
// Using num data type in Dart
void printInts(List a) => print(a);
  
void main() {
  var list = [];
  list.add(1000);
  list.add(2000);
  printInts(list);
}
}


输出:

error - The argument type 'List' can't be assigned to the parameter type 'List' at lib/strong_analysis.dart:27:17 - (argument_type_not_assignable)

发生上述错误是由于从动态类型 List 到整数类型的不合理隐式转换,这意味着声明 var List = [] 没有向dart分析器提供有关列表项类型的足够信息。为了解决这个问题,我们将类型注释传递给列表变量,如下所示:

Dart

// Using num data type in Dart
void printInts(List a) => print(a);
  
void main() {
  var list = [];
  list.add(1000);
  list.add(2000);
  printInts(list);
}
}

输出:

[1000, 2000]

健全的概念:

健全性是确保代码不会进入无效状态的过程。例如,如果变量的静态类型是布尔值,则不可能在运行时进入变量计算为非字符串值的状态。

拥有健全性的好处:

  • 在编译时调试类型相关的错误。
  • 使代码更易于阅读和调试。
  • 在更改破坏代码的其他相关部分的代码 picese 时获取更改。
  • 其关键特性之一是 Ahead Of Time (AOT) 编译,这显着减少了代码的编译时间并提高了效率。