Как получить подтипы, используя класс `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,

Другие вопросы по тегам