Skip to content

类型别名——由于是用typedef关键字声明的,所以常被叫做typedef——是一种用来指代类型的简洁方式。下面是声明并使用一个名为IntList的类型别名的例子:

dart
typedef IntList = List<int>;
IntList il = [1, 2, 3];

类型别名能够带有类型参数:

dart
typedef ListMapper<X> = Map<X, List<X>>;
Map<String, List<String>> m1 = {}; // 繁琐的写法。
ListMapper<String> m2 = {}; // 同样的功能,但写法更简短清晰。

版本说明

在2.13版本之前,typedef仅能用于函数类型。要使用新的typedef功能,语言版本至少得是2.13。

我们建议在大多数情形下,使用内联函数类型来替代函数typedef。不过,函数typedef仍有其用武之地:

dart
typedef Compare<T> = int Function(T a, T b);

int sort(int a, int b) => a - b;

void main() {
  assert(sort is Compare<int>); // 结果为True!
}