getter_not_subtype_setter_types 진단: getter 반환 타입이 setter 타입의 하위 타입이 아니에요

getter_not_subtype_setter_types 진단: getter 반환 타입이 setter 타입의 하위 타입이 아니에요

Dart 분석기가 내보내는 진단에는 이름이 있어요. getter_not_subtype_setter_typesgetter의 반환 타입이 같은 이름을 가진 setter의 매개변수 타입의 하위 타입(subtype)이 아닐 때 분석기가 알려주는 컴파일 타임 진단이에요. 같은 이름의 getter와 setter는 타입이 어긋나면 안 돼요.

출처: getter_not_subtype_setter_types

본문

설명

분석기는 getter의 반환 타입이 같은 이름을 가진 setter의 매개변수의 타입의 하위 타입이 아닐 때 이 진단을 만들어요.

이 하위 타입 관계는 getter와 setter가 같은 클래스에 있든, 둘 중 하나가 다른 하나의 슈퍼클래스(superclass)에 있든 항상 요구돼요.

참고: 이 규칙은 Dart 3.9부터는 더 이상 에러로 취급되지 않아요.

예시

다음 코드는 getter x의 반환 타입이 num이고 setter x의 매개변수 타입이 int인데, numint의 하위 타입이 아니기 때문에 이 진단이 발생해요:

// @dart = 3.8
class C {
  num get x => 0;

  set x(int y) {}
}

일반적인 수정 방법

getter의 타입이 올바르다면 setter의 타입을 바꿔요:

class C {
  num get x => 0;

  set x(num y) {}
}

setter의 타입이 올바르다면 getter의 타입을 바꿔요:

class C {
  int get x => 0;

  set x(int y) {}
}

더 알아보기