繁体   English   中英

在 Dart 中,如何引用包含泛型参数的 Type

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM