no_raw_types 린트: raw 타입 피하기

no_raw_types 린트: raw 타입 피하기

제네릭(generic) 타입의 타입 인자(type argument)를 생략한 raw 타입을 쓰지 않도록 잡아주는 린트(lint) 규칙이에요. 개발자가 타입 인자가 추론될 거라 착각할 수 있지만, 실제로는 각 타입 매개변수의 bound가 사용되어 타입 정보가 유실될 수 있어요.

출처: no_raw_types

본문

설명

raw 타입을 사용하지 마세요.

raw 타입이란 제네릭 타입에 대한 타입 애너테이션(type annotation)인데 타입 인자를 생략한 형태를 말해요. 개발자들은 타입 인자가 추론될 거라고 잘못 생각할 수 있지만, 실제로는 각 타입 매개변수의 bound가 사용되기 때문에 타입 정보가 유실될 수 있어요.

BAD:

List list = [1, 2, 3];

GOOD:

List<int> list = [1, 2, 3];

이렇게 raw 타입 대신 타입 인자를 명시해 주면 타입 정보를 유실하지 않고, 코드의 의도도 분명해져요.

활성화 방법

no_raw_types 규칙을 활성화하려면 analysis_options.yaml 파일의 linter > rules 아래에 no_raw_types를 추가해요.

analysis_options.yaml:

linter:
  rules:
    - no_raw_types

대신 YAML 맵 문법으로 린트 규칙을 설정한다면, linter > rules 아래에 no_raw_types: true라고 적어요.

analysis_options.yaml:

linter:
  rules:
    no_raw_types: true

더 알아보기