【发布时间】:2017-01-20 09:53:27
【问题描述】:
如何使用分析器包中的 DartType 类获取元素的子类型?
【问题讨论】:
标签: dart analyzer dart-analyzer
如何使用分析器包中的 DartType 类获取元素的子类型?
【问题讨论】:
标签: dart analyzer dart-analyzer
对于那些想知道的人,DartType 类是由 Dart 的静态工具包 analyzer 包创建的静态解析类型。作者在问他们如何在给定 DartType 的情况下获得其他类型 - 我认为您的意思是 super 类型,即您继承或实现的类型。
(如果您只是想检查DartType 是否是某事物的子类型,您可以使用isSubtypeOf)
我们可以获取DartType 的来源Element,然后,如果它是ClassElement,则只需返回所有超类型,否则可能默认为空列表:
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/type.dart';
/// Returns all sub-types of [type].
Iterable<DartType> getSubTypes(DartType type) {
final element = type.element;
if (element is ClassElement) {
return element.allSupertypes;
}
return const [];
}
这是analyzer 版本0.29.3。
【讨论】:
List<String> 我想要String。