type_literal_in_constant_pattern 진단: 상수 패턴에 타입 리터럴을 쓰지 말아요
type_literal_in_constant_pattern 진단: 상수 패턴에 타입 리터럴을 쓰지 말아요
type_literal_in_constant_pattern은 상수 패턴(constant pattern)에서 타입 리터럴을 쓰는 것을 Dart 분석기가 알려주는 린트(lint) 규칙이에요. 객체의 타입을 검사하려는 건지, 값이 타입 리터럴과 같은지 검사하려는 건지에 따라 패턴을 다르게 써야 해요.
본문
설명
객체의 타입이 Foo인지 검사하고 싶다면, 대신 Foo _라고 쓰는 게 맞아요.
좋지 않은 코드 (BAD)
void f(Object? x) {
if (x case num) {
print('int or double');
}
}
좋은 코드 (GOOD)
void f(Object? x) {
if (x case num _) {
print('int or double');
}
}
매칭된 값(타입이 Type이라고 기대하는 값)이 타입 리터럴 Foo와 같은지 정말로 검사하고 싶다면, const (Foo)를 사용해서 이 린트를 조용히 넘길(silence) 수 있어요.
좋지 않은 코드 (BAD)
void f(Object? x) {
if (x case int) {
print('int');
}
}
좋은 코드 (GOOD)
void f(Object? x) {
if (x case const (int)) {
print('int');
}
}
규칙 활성화하기
analysis_options.yaml 파일의 linter > rules 아래에 type_literal_in_constant_pattern를 추가해서 활성화할 수 있어요.
linter:
rules:
- type_literal_in_constant_pattern
YAML 맵 문법으로 설정하고 있다면 linter > rules 아래에 type_literal_in_constant_pattern: true를 추가해요.
linter:
rules:
type_literal_in_constant_pattern: true