本节目标

  • 了解 弱类型 强类型
  • 常见 强类型 有哪些
  • 如何选着何时用那种类型

环境

  • Dart 2.0.0

弱类型

var

如果没有初始值,可以变成任何类型

1
2
3
4
5
6
var a;
a = 'ducafecat';
a = 123;
a = true;
a = {'key': 'val123'};
a = ['abc'];

Object

动态任意类型,编译阶段检查类型

1
2
3
4
Object a = 'doucafecat';
a = 123;
a = [2222];
a.p();

dynamic

动态任意类型,编译阶段不检查检查类型

1
2
3
4
dynamic a = 'doucafecat';
a = 123;
a = [1111];
a.p();

比较 var 与 dynamic、Object

唯一区别 var 如果有初始值,类型被锁定

1
2
3
4
var a = 'ducafecat';
dynamic a = 'doucafecat';
Object a = 'doucafecat';
a = 123;

强类型

申明类型

声明后,类型被锁定

1
2
3
String a;
a = 'ducafecat';
a = 123;

常见类型

名称 说明
num 数字
int 整型
double 浮点
bool 布尔
String 字符串
StringBuffer 字符串 buffer
DateTime 时间日期
Duration 时间区间
List 列表
Sets 无重复队列
Maps kv 容器
enum 枚举
1
2
3
4
5
6
String a = 'doucafecat';
int i = 123;
double d = 0.12;
bool b = true;
DateTime dt = new DateTime.now();
List l = [ a, i, d, b, dt];

默认值

一切都是 Object , 变量声明后默认都是 null

1
2
3
4
var a;
String a;
print(a);
assert(a == null);

assert 检查点函数,如果不符合条件直接抛出错误并终止程序进程

如何使用

  • 在写 API 接口的时候,请用 强类型,一旦不符合约定,接收数据时能方便排查故障
  • 你在写个小工具时,可以用 弱类型,这样代码写起来很快,类型自动适应

代码

参考


© 猫哥

https://ducafecat.tech