4

How can I get the subtypes of an element using the class DartType from the analyzer package?

4

1 回答 1

5

对于那些想知道的人,DartType该类是由包创建的静态解析类型,该analyzer包是 Dart 的静态工具包。作者在问他们如何获得其他类型DartType- 我认为您的意思是类型,即您继承或实现的类型。

(如果您只是想检查是否是某物DartType 的子类型isSubtypeOf,您可以使用)

我们可以获取 theElementDartType来源,然后,如果它是 a 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

于 2017-01-20T01:53:27.407 回答