跳到主要内容

no_combined_super_signature

无法从覆盖方法 '{1}' 推断 '{0}' 中缺失的类型。

描述

#

当方法声明需要推断一个或多个类型,且这些类型无法推断时,分析器会生成此诊断信息,原因是没有一个覆盖方法的函数类型是所有其他覆盖方法的超类型,如 覆盖推断 中所述。

示例

#

以下代码会生成此诊断信息,因为类 C 中声明的方法 m 缺少返回类型和参数 a 的类型,并且这两个缺失的类型都无法为其推断。

dart
abstract class A {
  A m(String a);
}

abstract class B {
  B m(int a);
}

abstract class C implements A, B {
  m(a);
}

在此示例中,无法执行覆盖推断,因为覆盖方法在以下方面不兼容:

  • 参数类型(Stringint)都不是彼此的超类型。
  • 返回类型都不是彼此的子类型。

常见修复方法

#

如果可能,请在子类中为方法添加与所有覆盖方法的类型一致的类型。

dart
abstract class A {
  A m(String a);
}

abstract class B {
  B m(int a);
}

abstract class C implements A, B {
  C m(Object a);
}