如何使用 `analyzer` 中的 `DartType` class 获取子类型?
How to get subtypes using `DartType` class from the `analyzer`?
如何使用分析器包中的 class DartType 获取元素的子类型?
对于那些想知道的人,DartType
class 是由 analyzer
包创建的静态 resolved 类型,Dart 的静态工具包裹。作者问他们如何在给定 DartType
的情况下获得其他类型 - 我想你的意思是 super 类型,即你继承或实现的类型。
(如果你只是想检查 DartType
是否是某个东西的子类型,你可以使用 isSubtypeOf
)
我们可以获取 DartType
的来源 Element
,然后,如果它是 ClassElement
,只需 return 所有超级类型,否则可能默认为空列表:
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
。
如何使用分析器包中的 class DartType 获取元素的子类型?
对于那些想知道的人,DartType
class 是由 analyzer
包创建的静态 resolved 类型,Dart 的静态工具包裹。作者问他们如何在给定 DartType
的情况下获得其他类型 - 我想你的意思是 super 类型,即你继承或实现的类型。
(如果你只是想检查 DartType
是否是某个东西的子类型,你可以使用 isSubtypeOf
)
我们可以获取 DartType
的来源 Element
,然后,如果它是 ClassElement
,只需 return 所有超级类型,否则可能默认为空列表:
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
。