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 린트 규칙은 다음 규칙들과 함께 쓸 수 없어요:
- avoid_types_on_closure_parameters
- omit_local_variable_types
- omit_obvious_local_variable_types
- omit_obvious_property_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