argument_type_not_assignable

argument_type_not_assignable

Dart 애널라이저가 생성하는 argument_type_not_assignable 진단에 대한 설명이에요.

출처: 원문

본문

인자 타입 {0}은(는) 매개변수 타입 {1}에 할당할 수 없어요. {2}

설명

애널라이저는 인자의 정적 타입이 해당 매개변수의 정적 타입에 할당될 수 없을 때 이 진단을 생성해요.

예시

아래 코드는 numString에 할당할 수 없기 때문에 이 진단을 만들어요.

String f(String x) => x;
String g(num y) => f(y);

일반적인 수정 방법

가능하다면 정적 타입이 할당 가능하도록 코드를 다시 작성해요. 위 예시에서는 매개변수 y의 타입을 바꿀 수 있어요.

String f(String x) => x;
String g(String y) => f(y);

그런 수정이 불가능하다면 인자 값이 요구되는 타입이 아닌 경우를 처리하는 코드를 추가해요. 한 가지 방법은 다른 타입을 요구되는 타입으로 강제 변환(coerce)하는 거예요.

String f(String x) => x;
String g(num y) => f(y.toString());

또 다른 방법은 명시적인 타입 검사와 대체 코드를 추가하는 거예요.

String f(String x) => x;
String g(Object y) => f(y is String ? y : '');

인자의 런타임 타입이 항상 매개변수의 정적 타입과 같다고 확신하고, 틀렸을 때 런타임에 예외가 발생할 위험을 감수할 수 있다면 명시적인 캐스트를 추가해요.

String f(String x) => x;
String g(num y) => f(y as String);

더 알아보기

타입 시스템과 할당 규칙에 대한 더 자세한 내용은 Dart 언어 문서를 참고해요.