Dart:如何将多参数函数类型赋值给Type变量?
解决Dart中函数类型赋值给Type变量的问题
可行解决方法
1. 局部typedef(Dart 2.13+)
Dart 2.13及之后版本支持在函数内部定义typedef,可避开全局作用域的限制:
void main() { typedef Foo = int Function(int); Type fooType = Foo; print(fooType); // 输出: int Function(int) }
2. 泛型辅助函数获取类型对象
如果无法使用局部typedef,可通过泛型函数间接提取类型对象:
Type getType<T>() => T; void main() { Type fooType = getType<int Function(int)>(); print(fooType); // 输出: int Function(int) }
原因说明
直接写Type foo = int Function(int)报错的核心原因:int Function(int)是类型字面量,而Type变量需要接收的是类型对象。Dart不会自动将类型字面量转换为对应的Type对象,必须通过typedef别名或者泛型函数的方式,间接获取类型对象。
内容的提问来源于stack exchange,提问作者Anton
相关产品推荐
相关产品推荐

