field_initializing_formal_not_assignable 진단: 초기화 형식 매개변수의 타입이 필드 타입에 맞지 않아요

field_initializing_formal_not_assignable 진단: 초기화 형식 매개변수의 타입이 필드 타입에 맞지 않아요

Dart 분석기가 내보내는 진단에는 이름이 있어요. field_initializing_formal_not_assignable초기화 형식 매개변수의 타입이 초기화하려는 필드의 타입에 할당될 수 없을 때 분석기가 알려주는 진단이에요. 이 경우 메시지는 "매개변수 타입 '{0}'이(가) 필드 타입 '{1}'과(와) 호환되지 않아요(The parameter type '{0}' is incompatible with the field type '{1}')"로 표시돼요.

출처: field_initializing_formal_not_assignable

본문

설명

초기화 형식 매개변수의 타입이 초기화되는 필드의 타입에 할당될 수 없으면 이 진단이 나와요. 매개변수는 필드 타입의 하위 타입(subtype)이어야 해요.

예시

다음 코드는 초기화 형식 매개변수의 타입이 String인데 필드의 타입이 int라서 이 진단이 나와요. 매개변수의 타입은 필드 타입의 하위 타입이어야 해요.

class C {
  int f;

  C(String this.f);
}

흔한 해결 방법

필드의 타입이 잘못됐다면 필드의 타입을 매개변수의 타입에 맞추고, 매개변수 쪽의 타입 지정은 빼는 것도 고려해요.

class C {
  String f;

  C(this.f);
}

매개변수의 타입이 잘못됐다면 매개변수 쪽의 타입 지정을 빼요.

class C {
  int f;

  C(this.f);
}

필드와 매개변수 둘 모두의 타입이 맞다면, 초기화 형식 매개변수 대신 초기화 리스트를 써서 매개변수 값을 올바른 타입의 값으로 변환해요.

class C {
  int f;

  C(String s) : f = int.parse(s);
}

더 알아보기