지역 변수에 명확하지 않은 타입을 지정해요

지역 변수에 명확하지 않은 타입을 지정해요

Dart는 타입 추론을 잘해주지만, 초기화식만 봐서는 타입을 짐작하기 어려운 경우가 있어요. 그럴 때 지역 변수에 타입을 명시해 주면 코드를 읽는 사람과 컴파일러 모두에게 큰 도움이 됩니다.

출처: specify_nonobvious_local_variable_types

본문

타입이 비명시적(non-obvious)일 때 초기화된 지역 변수에 타입을 명시하세요.

지역 변수에 붙이는 타입 어노테이션은 타입 추론에 대한 요청처럼 작동해요. 타입 추론 단계의 기대 결과를 문서화하고, 컴파일러와 분석기가 원하는 결과를 만들어내는 타입 인자와 어노테이션을 초기화식에서 찾아내는 복잡한 일을 선언적으로 맡길 수 있게 해주죠.

또한 지역 변수의 타입 어노테이션은 초기화식의 타입을 읽는 사람에게 알려줘요. 그래서 초기화식만 봐서는 바로 드러나지 않을 수 있는 변수 타입에 대한 확실한 정보를 가지고 다음 줄부터 코드를 읽어나갈 수 있게 됩니다.

나쁜 예:

List<List<Ingredient>> possibleDesserts(Set<Ingredient> pantry) {
  var desserts = genericFunctionDeclaredFarAway(<num>[42], 'Something');
  for (final recipe in cookbook) {
    if (pantry.containsAll(recipe)) {
      desserts.add(recipe);
    }
  }

  return desserts;
}

const List<List<Ingredient>> cookbook = ...;

좋은 예:

List<List<Ingredient>> possibleDesserts(Set<Ingredient> pantry) {
  List<List<Ingredient>> desserts = genericFunctionDeclaredFarAway(
    <num>[42],
    'Something',
  );
  for (final List<Ingredient> recipe in cookbook) {
    if (pantry.containsAll(recipe)) {
      desserts.add(recipe);
    }
  }

  return desserts;
}

const List<List<Ingredient>> cookbook = ...;

호환되지 않는 규칙

specify_nonobvious_local_variable_types 린트는 다음 규칙과 호환되지 않아요:

활성화 방법

specify_nonobvious_local_variable_types 규칙을 사용하려면 analysis_options.yaml 파일의 linter > rules 아래에 specify_nonobvious_local_variable_types를 추가하면 돼요:

linter:
  rules:
    - specify_nonobvious_local_variable_types

린트 규칙을 YAML 맵 문법으로 설정한다면, linter > rules 아래에 specify_nonobvious_local_variable_types: true를 추가하면 되고요:

linter:
  rules:
    specify_nonobvious_local_variable_types: true

더 알아보기