always_specify_types 린트 규칙

always_specify_types 린트 규칙

모든 곳에 타입 어노테이션을 명시하도록 안내하는 린트 규칙이에요. 타입을 명확히 적어 주면 코드의 의도를 훨씬 잘 드러낼 수 있어요.

출처: always_specify_types

본문

flutter 저장소 스타일 가이드에서 가져온 규칙이에요:

DO 타입 어노테이션을 명시하세요.

타입이 불명확하다는 표현으로 var를 쓰거나 타입 어노테이션을 생략하는 축약 표현은 피하세요. 타입이 불명확하다는 것을 분명히 드러내고 싶다면 dynamic을 쓰고, ==hashCode를 구현한 객체를 원한다는 것을 분명히 하고 싶다면 Object를 쓰면 돼요.

BAD:

var foo = 10;
final bar = Bar();
const quux = 20;

GOOD:

int foo = 10;
final Bar bar = Bar();
String baz = 'hello';
const int quux = 20;

NOTE: meta 패키지의 @optionalTypeArgs 어노테이션을 사용하면, API 작성자가 실제 타입은 dynamic이어야 하지만 선언은 선택사항으로 취급해야 하는 타입 파라미터를 특별하게 처리할 수 있어요. 예를 들어 타입 파라미터를 선택사항처럼 다루고 싶은 Key 객체가 있다고 해볼게요. @optionalTypeArgs를 쓰면 이렇게 돼요:

import 'package:meta/meta.dart';

@optionalTypeArgs
class Key<T> {
 ...
}

void main() {
  Key s = Key(); // OK!
}

Incompatible rules

always_specify_types 린트 규칙은 다음 규칙들과 함께 쓸 수 없어요:

Enable

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

linter:
  rules:
    - always_specify_types

대신 YAML 맵 문법으로 린터 규칙을 설정한다면, linter > rules 아래에 always_specify_types: true를 추가하면 돼요:

linter:
  rules:
    always_specify_types: true

더 알아보기