Как получить подтипы, используя класс `DartType` из`analyzer`?
Как я могу получить подтипы элемента, используя класс DartType из пакета анализатора?
1 ответ
Решение
Для тех, кто интересуется, DartType
класс является статически разрешенным типом, который создается analyzer
пакет, статический пакет инструментов Дартса. Автор спрашивает, как они могут получить другие типы с учетом DartType
- Я думаю, что вы имеете в виду супер- типы, то есть типы, которые вы наследуете или реализуете.
(Если вы просто хотите проверить, DartType
это подтип чего-то, вы могли бы использовать isSubtypeOf
)
Мы можем получить Element
что DartType
происходит, а затем, если это 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
,