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);
}
在此示例中,无法执行覆盖推断,因为覆盖方法在以下方面不兼容:
- 参数类型(
String
和int
)都不是彼此的超类型。 - 返回类型都不是彼此的子类型。
常见修复方法
#如果可能,请在子类中为方法添加与所有覆盖方法的类型一致的类型。
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);
}