type_literal_in_constant_pattern 진단: 상수 패턴에 타입 리터럴을 쓰지 말아요

type_literal_in_constant_pattern 진단: 상수 패턴에 타입 리터럴을 쓰지 말아요

type_literal_in_constant_pattern상수 패턴(constant pattern)에서 타입 리터럴을 쓰는 것을 Dart 분석기가 알려주는 린트(lint) 규칙이에요. 객체의 타입을 검사하려는 건지, 값이 타입 리터럴과 같은지 검사하려는 건지에 따라 패턴을 다르게 써야 해요.

출처: type_literal_in_constant_pattern

본문

설명

객체의 타입이 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

더 알아보기