Dart tour: 17、Typedefs
在 Dart
中,函数与 String
和 Number
一样都是对象,可以使用类型定义(或者叫方法类型别名)来为函数的类型命名。使用函数命名将该函数类型的函数赋值给一个变量时,类型定义将会保留相关的类型信息。
上述代码中没有使用类型定义,当将参数 f
赋值给 compare
时,函数的类型信息丢失了,这里 f
这个函数的类型为 (Object, Object) → int
(→
代表返回),当然该类型也是一个 Function
的子类,但是将 f
赋值给 compare
后, f
的类型 (Object, Object) → int
就会丢失。这时可以使用 typedef
显式地保留类型信息。
由于类型定义只是别名,因此可以使用它判断任意函数类型的方法。