pattern_never_matches_value_type — 값 타입이 패턴과 절대 일치하지 않아요
pattern_never_matches_value_type — 값 타입이 패턴과 절대 일치하지 않아요
Dart 분석기(analyzer)가 만들어내는 pattern_never_matches_value_type 진단에 대한 설명이에요.
본문
이 진단이 나오면 터미널에는 다음과 같은 메시지가 떠요.
The matched value type '{0}' can never match the required type '{1}'.
즉, 매칭하려는 값의 타입과 패턴이 요구하는 타입이 절대 맞을 수 없다는 뜻이에요.
언제 발생하나요?
객체의 타입을 패턴이 절대 매칭하지 못할 때 분석기가 이 진단을 만들어요. 예를 들어 double 값을 int 패턴으로 매칭하는 건 성공할 수 없으니 그런 경우예요.
예시
다음 코드는 이 진단이 생기는 예다. (원문 예시는 String? 값을 int 패턴으로 검사하고 있어요.)
void f(String? s) {
if (s case int _) {}
}
어떻게 고치나요?
두 타입 중 하나가 잘못된 거라면, 패턴 매칭이 성공하도록 한쪽 또는 양쪽 타입을 바꾸면 돼요.
void f(String? s) {
if (s case String _) {}
}
타입 자체는 맞는데 패턴 매칭이 불필요한 거라면, 그 매칭을 제거해도 돼요.
void f(double x) {}
더 알아보기
- 패턴 문서 — 타입 패턴과 패턴 매칭 규칙에 대해 더 자세히 볼 수 있어요.