top-level·static 변수에 명확하지 않은 타입을 지정해요
top-level·static 변수에 명확하지 않은 타입을 지정해요
클래스 멤버나 top-level 변수도 초기화식만으로는 타입을 알기 어려울 때가 있어요. 그런 경우 타입을 명시해 두면 어디서 사용하든 타입을 확실히 알 수 있습니다.
본문
타입이 비명시적(non-obvious)일 때 초기화된 top-level 또는 static 변수에 타입을 명시하세요.
top-level이나 static 변수에 붙이는 타입 어노테이션은 타입 추론에 대한 요청처럼 작동해요. 타입 추론 단계의 기대 결과를 문서화하고, 컴파일러와 분석기가 원하는 결과를 만들어내는 타입 인자와 어노테이션을 초기화식에서 찾아내는 복잡한 일을 선언적으로 맡길 수 있게 해주죠.
또한 top-level이나 static 변수의 타입 어노테이션은 초기화식의 타입을 읽는 사람에게 알려줘요. 그래서 초기화식만 봐서는 바로 드러나지 않을 수 있는 변수 타입에 대한 확실한 정보를 가지고 그 변수가 사용되는 코드 위치들을 읽어나갈 수 있게 됩니다.
나쁜 예:
final myTopLevelVariable =
genericFunctionWrittenByOtherFolks(with, args);
class A {
static var myStaticVariable =
myTopLevelVariable.update('foo', null);
}
좋은 예:
final Map<String, Widget?> myTopLevelVariable =
genericFunctionWrittenByOtherFolks(with, args);
class A {
static Map<String, Widget?> myStaticVariable =
myTopLevelVariable.update('foo', null);
}
활성화 방법
specify_nonobvious_property_types 규칙을 사용하려면 analysis_options.yaml 파일의 linter > rules 아래에 specify_nonobvious_property_types를 추가하면 돼요:
linter:
rules:
- specify_nonobvious_property_types
린트 규칙을 YAML 맵 문법으로 설정한다면, linter > rules 아래에 specify_nonobvious_property_types: true를 추가하면 되고요:
linter:
rules:
specify_nonobvious_property_types: true
더 알아보기
- Dart linter rules — 다른 린트 규칙들 살펴보기