avoid_shadowing_type_parameters 린트 규칙: 타입 매개변수를 가리지 맙시다
avoid_shadowing_type_parameters 린트 규칙: 타입 매개변수를 가리지 맙시다
avoid_shadowing_type_parameters는 타입 매개변수(type parameter)를 가리는(shadowing) 것을 피해 달라고 알려주는 Dart 린트(lint) 규칙이에요. Dart 2.1에서 소개된 규칙이랍니다.
본문
설명
클래스나 메서드에서 타입 매개변수의 이름을 다시 사용해 버리면, 바깥쪽 타입 매개변수를 가리게(shadow) 돼요. 이러면 이름이 같아서 어떤 게 진짜인지 헷갈리게 되고, 의도치 않은 오류의 원인이 될 수 있어요. 그래서 타입 매개변수 이름은 서로 겹치지 않게 새로 짓는 게 좋아요.
나쁜 예시
class A<T> {
void fn<T>() {}
}
클래스 레벨에서 이미 T를 썼는데, 메서드에서 또 T를 선언하고 있어요. 안쪽 T가 바깥쪽 T를 가려버려요.
좋은 예시
class A<T> {
void fn<U>() {}
}
메서드의 타입 매개변수 이름을 바깥쪽과 다른 U로 바꿔서, 이름이 겹치지 않게 했어요.
규칙 활성화하기
avoid_shadowing_type_parameters 규칙을 활성화하려면 analysis_options.yaml 파일의 linter > rules 아래에 추가해요:
linter:
rules:
- avoid_shadowing_type_parameters
YAML 맵(map) 문법을 쓴다면 linter > rules 아래에 avoid_shadowing_type_parameters: true를 넣으면 돼요:
linter:
rules:
avoid_shadowing_type_parameters: true