할당이 유효하지 않음

할당이 유효하지 않음 (invalid_assignment)

이 문서는 Dart 분석기(analyzer)가 만들어 내는 invalid_assignment 진단(diagnostic)에 대한 상세한 내용을 설명하는 문서예요. 간단히 말하면, 변수에 할당되는 표현식의 정적 타입(static type)이 그 변수의 타입에 할당될 수 없을 때 분석기가 이 진단을 알려 줘요. 어디에 어떤 문제가 있는지 차근차근 살펴볼게요.

출처: invalid_assignment

본문

진단 메시지

A value of type '{0}' can't be assigned to a variable of type '{1}'.

'{0}' 타입의 값은 '{1}' 타입의 변수에 할당할 수 없어요.

설명

분석기는 변수에 할당되는 표현식의 정적 타입이 그 변수의 타입에 할당될 수 없을 때 이 진단을 만들어 내요.

예시

초기화 식의 타입(int)이 변수의 타입(String)에 할당될 수 없기 때문에 다음 코드는 이 진단을 만들어 내요.

int i = 0;
String s = i;

일반적인 해결 방법

할당되는 값이 정적 타입에는 그렇게 드러나지 않더라도 런타임에서는 항상 할당 가능하다면, 명시적으로 캐스팅(cast)을 추가해 주세요.

그렇지 않다면, 할당되는 값이 기대하는 타입을 갖도록 바꿔 주세요. 앞의 예시에서는 다음과 같이 바꿀 수 있어요.

int i = 0;
String s = i.toString();

값을 바꿀 수 없다면, 할당되는 값의 타입과 호환되도록 변수의 타입을 변경해 주세요.

int i = 0;
int s = i;

더 알아보기