2
アナライザパッケージのクラスDartTypeを使用して要素のサブタイプを取得するにはどうすればよいですか?不思議に思ったものについては`analyzer`から` DartType`クラスを使ってサブタイプを取得する方法は?
アナライザパッケージのクラスDartTypeを使用して要素のサブタイプを取得するにはどうすればよいですか?不思議に思ったものについては`analyzer`から` DartType`クラスを使ってサブタイプを取得する方法は?
は、DartType
クラスはanalyzer
パッケージ、ダートの静的ツーリングパッケージによって作成された静的が解決タイプです。著者は、他のタイプをどのように入手できるかを尋ねています。DartType
- superのタイプ、つまり継承したり実装したりしていると思います。
(あなたは、単にDartType
が何かのサブタイプあるかどうかを確認したい場合は、isSubtypeOf
を使用することができます)
それならば私たちは、その後、DartType
が由来するElement
のホールドを取得し、することができます
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
である:単純にそうでないかもしれない空のリストをデフォルトと、スーパータイプのすべてを返し、ClassElement
です。
申し訳ありませんが、私はジェネリックタイプのサブタイプが必要です: 'List' 'String'が必要です。 –
私は質問を変更する必要がありますか? –
それは別のものを尋ねるか、それを聞いてください - これは誰かにとって役に立ちそうですね:) – matanlurey