类型别名——由于是用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!
}