널 타입은 on(슈퍼클래스 제약)에 쓸 수 없어요
널 타입은 on(슈퍼클래스 제약)에 쓸 수 없어요
nullable_type_in_on_clause 진단은 mixin 선언의 on 절에 널 타입의 슈퍼클래스 제약을 지정했을 때 분석기가 알려 주는 메시지예요. 널 타입을 제약으로 거는 건 의미가 없어서, "널 타입은 슈퍼클래스 제약으로 쓸 수 없어요"라고 짚어 주는 거죠.
본문
설명 (Description)
분석기는 mixin 선언이 on 절로 슈퍼클래스 제약을 지정할 때, 지정된 클래스 뒤에 ?가 붙어 있으면 이 진단을 만들어 내요.
널 슈퍼클래스 제약을 지정하는 건 유효하지 않아요. 그렇게 해도 아무 의미가 없거든요. on 절을 담은 mixin이 의존하는 인터페이스가 달라지지 않기 때문이에요.
다만 슈퍼클래스 제약의 타입 인자로는 널 타입을 쓰는 게 가능해요. 예를 들어 mixin A on B<C?> {}처럼요.
예시 (Example)
아래 코드는 A?가 널 타입인데 널 타입은 on 절에 쓸 수 없어서 이 진단이 발생해요.
class C {}
mixin M on C? {}
흔한 해결책 (Common fixes)
타입에서 물음표(?)를 떼면 돼요.
class C {}
mixin M on C {}
더 알아보기
- Null safety — 널 안전성이 어디까지 적용되는지가 나와요.
- Mixins — dart.dev — mixin과
on절 문법을 다루는 문서예요. - 모든 진단 목록 — 분석기가 알려 주는 다른 진단도 살펴보세요.