pattern_type_mismatch_in_irrefutable_context — 반박 불가 문맥에서 타입이 안 맞아요
pattern_type_mismatch_in_irrefutable_context — 반박 불가 문맥에서 타입이 안 맞아요
Dart 분석기(analyzer)가 만들어내는 pattern_type_mismatch_in_irrefutable_context 진단에 대한 설명이에요.
본문
이 진단이 나오면 터미널에는 다음과 같은 메시지가 떠요.
The matched value of type '{0}' isn't assignable to the required type '{1}'.
즉, 매칭되는 값의 타입이 패턴이 요구하는 타입에 대입될 수 없다는 뜻이에요.
언제 발생하나요?
패턴 할당(pattern assignment)이나 패턴 선언(pattern declaration)의 오른쪽에 있는 값의 타입이, 그 값을 매칭하는 데 쓰는 패턴이 요구하는 타입과 맞지 않을 때 분석기가 이 진단을 만들어요.
예시
다음 코드는 x가 String이 아닐 수도 있어서, 그 값을 String 객체 패턴으로 매칭하지 못할 수 있기 때문에 이 진단이 생겨요.
void f(Object x) {
var String(length: a) = x;
print(a);
}
어떻게 고치나요?
오른쪽에 있는 표현식의 타입이 패턴이 요구하는 타입과 맞도록 코드를 바꾸면 돼요. 아래처럼 f의 매개변수 타입을 String으로 좁혀 주면 패턴이 제대로 매칭될 수 있어요.
void f(String x) {
var String(length: a) = x;
print(a);
}
더 알아보기
- 패턴 문서 — 객체 패턴과 반박 불가(irrefutable) 문맥에 대해 더 자세히 볼 수 있어요.