跳过主内容

type_parameter_supertype_of_its_bound

'{0}' 不能是其上限的超类型。

描述

#

当类型参数的上限(即 extends 关键字后的类型)直接或间接是类型参数本身时,分析器会生成此诊断信息。声明类型参数必须与自身相同或为自身的子类型,或者为自身的子类型的子类型是没有帮助的,因为它总是与自身相同。

示例

#

以下代码生成此诊断信息,因为 T 的上限是 T

dart
class C<T extends T> {}

以下代码生成此诊断信息,因为 T1 的上限是 T2,而 T2 的上限是 T1,这实际上使得 T1 的上限为 T1

dart
class C<T1 extends T2, T2 extends T1> {}

常见修复方法

#

如果类型参数需要是某种类型的子类,请将上限替换为所需的类型

dart
class C<T extends num> {}

如果类型参数可以是任何类型,请移除 extends 子句

dart
class C<T> {}