跳到主要内容

type_parameter_referenced_by_static

静态成员不能引用类的类型参数。

描述

#

当静态成员引用类声明的类型参数时,分析器会生成此诊断信息。类型参数仅对类的实例有意义。

示例

#

以下代码会产生此诊断信息,因为静态方法 hasType 引用了类型参数 T

dart
class C<T> {
  static bool hasType(Object o) => o is T;
}

常见修复方法

#

如果该成员可以是实例成员,则移除关键字 static

dart
class C<T> {
  bool hasType(Object o) => o is T;
}

如果该成员必须是静态成员,则使其成为泛型成员

dart
class C<T> {
  static bool hasType<S>(Object o) => o is S;
}

但请注意,TS 之间没有关系,因此第二个选项改变了原本可能预期的语义。