【问题标题】:How to get subtypes using `DartType` class from the `analyzer`?如何使用 `analyzer` 中的 `DartType` 类获取子类型?
【发布时间】:2017-01-20 09:53:27
【问题描述】:

如何使用分析器包中的 DartType 类获取元素的子类型?

【问题讨论】:

    标签: dart analyzer dart-analyzer


    【解决方案1】:

    对于那些想知道的人,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&lt;String&gt; 我想要String
    • 我应该换个问题吗?
    • 那个或问另一个 - 我想这对某人有用:)
    • @matanlurey 你知道如何从 Type 中获取 DartType 吗?因为在我的生成器上我想使用 isSubtypeOf 但不能因为我只有 Type 而不是 dartType 来比较
    猜你喜欢
    • 1970-01-01
    • 2021-05-19
    • 2019-07-24
    • 2018-02-19
    • 2021-04-28
    • 1970-01-01
    • 2018-01-16
    • 2011-02-16
    • 1970-01-01
    相关资源
    最近更新 更多