跳到主要內容

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);
}