nullable 값을 non-nullable 타입으로 캐스팅하지 말아 주세요
nullable 값을 non-nullable 타입으로 캐스팅하지 말아 주세요
nullable 값(T?)을 non-nullable 타입으로 곧바로 캐스팅(as)하면 null 검사를 건너뛰게 되는데, 대부분 의도한 동작이 아니에요. 명시적으로 null이 아님을 알려 주는 게 좋아요.
본문
nullable 값은 non-nullable 타입으로 캐스팅하지 않는 걸 권장해요. 이렇게 하면 null 검사가 숨겨지는데, 대부분의 경우 기대한 동작이 아니거든요.
BAD 예시:
class A {}
class B extends A {}
A? a;
var v = a as B;
var v = a as A;
GOOD 예시:
class A {}
class B extends A {}
A? a;
var v = a! as B;
var v = a!;
이렇게 ! 연산자로 null이 아님을 명시적으로 밝히면 캐스팅하기 전에 null 검사가 제대로 드러나요.
활성화하기
cast_nullable_to_non_nullable 규칙을 활성화하려면 analysis_options.yaml 파일의 linter > rules 아래에 cast_nullable_to_non_nullable을 추가하면 돼요.
linter:
rules:
- cast_nullable_to_non_nullable
만약 linter 규칙을 YAML 맵 문법으로 설정한다면 linter > rules 아래에 cast_nullable_to_non_nullable: true라고 적어 주면 돼요.
linter:
rules:
cast_nullable_to_non_nullable: true
더 알아보기
- Linter rules 목록에서 다른 규칙도 살펴볼 수 있어요.
- null을 안전하게 다루는 방법은 Null safety 문서에서 확인해 보세요.