getter_not_subtype_setter_types 진단: getter 반환 타입이 setter 타입의 하위 타입이 아니에요
getter_not_subtype_setter_types 진단: getter 반환 타입이 setter 타입의 하위 타입이 아니에요
Dart 분석기가 내보내는 진단에는 이름이 있어요. getter_not_subtype_setter_types는 getter의 반환 타입이 같은 이름을 가진 setter의 매개변수 타입의 하위 타입(subtype)이 아닐 때 분석기가 알려주는 컴파일 타임 진단이에요. 같은 이름의 getter와 setter는 타입이 어긋나면 안 돼요.
본문
설명
분석기는 getter의 반환 타입이 같은 이름을 가진 setter의 매개변수의 타입의 하위 타입이 아닐 때 이 진단을 만들어요.
이 하위 타입 관계는 getter와 setter가 같은 클래스에 있든, 둘 중 하나가 다른 하나의 슈퍼클래스(superclass)에 있든 항상 요구돼요.
참고: 이 규칙은 Dart 3.9부터는 더 이상 에러로 취급되지 않아요.
예시
다음 코드는 getter x의 반환 타입이 num이고 setter x의 매개변수 타입이 int인데, num은 int의 하위 타입이 아니기 때문에 이 진단이 발생해요:
// @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) {}
}