type_init_formals 진단: 초기화 formal에 타입을 붙이지 말아요
type_init_formals 진단: 초기화 formal에 타입을 붙이지 말아요
type_init_formals는 초기화 formal(initializing formal)에 타입 애너테이션을 붙이지 말도록 안내하는 린트(lint) 규칙이에요. 생성자 매개변수가 this.x나 super.x로 필드를 초기화한다면 타입이 이미 정해져 있기 때문이에요.
본문
설명
Effective Dart에서 안내하듯, 초기화 formal에는 타입 애너테이션을 붙이지 마세요 (DON'T). 생성자 매개변수가 this.x로 필드를 초기화한다면 해당 매개변수의 타입은 필드와 같은 타입으로 이해돼요. super.x로 슈퍼 생성자에 전달한다면 슈퍼 생성자 매개변수와 같은 타입으로 이해돼요.
필드의 타입과 다른 타입으로 초기화 formal에 타입 애너테이션을 붙이는 것은 괜찮아요.
좋지 않은 코드 (BAD)
class Point {
int x, y;
Point(int this.x, int this.y);
}
좋은 코드 (GOOD)
class Point {
int x, y;
Point(this.x, this.y);
}
좋지 않은 코드 (BAD) — super 위임
class A {
int a;
A(this.a);
}
class B extends A {
B(int super.a);
}
좋은 코드 (GOOD)
class A {
int a;
A(this.a);
}
class B extends A {
B(super.a);
}
규칙 활성화하기
analysis_options.yaml 파일의 linter > rules 아래에 type_init_formals를 추가해서 활성화할 수 있어요.
linter:
rules:
- type_init_formals
YAML 맵 문법으로 설정하고 있다면 linter > rules 아래에 type_init_formals: true를 추가해요.
linter:
rules:
type_init_formals: true