[英]In Dart, how to reference a Type that contains generic parameters
我正在尝试使用泛型获取类的Type
。 基本上我想要下面的代码:
Type myType = List<String>;
但这显然行不通。
我知道我可以做到以下几点:
// indirect from an instance
List<String> myList = methodCall();
Type varType = myList;
// directly without generics
Type stringType = String;
但是如何通过泛型直接从定义中实现呢?
谢谢
您可以使用类似的函数获取任何类型的Type
对象
Type typeOf<T>() => T;
然后你可以写:
Type myType = typeOf<List<String>>();
如果在 VM 上运行,这可能就是您要查找的内容:
void main() {
print(myType);
}
Type myType = List<String>().runtimeType;
这给出了List<String>
。
但是,当编译为 JS 时,同样的事情会输出JSArray<String>
。
从Dart 2.15 开始,您不再需要使用typeOf
来处理带有泛型的类型文字:
var x = List; // Already supported
var y = typeOf<List<String>>(); // Pre-2.15 workaround
var z = List<String>; // New in 2.15
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.