type_annotation_deferred_class 진단: 지연(deferred) 라이브러리의 타입을 애너테이션으로 쓸 때
type_annotation_deferred_class 진단: 지연(deferred) 라이브러리의 타입을 애너테이션으로 쓸 때
분석기가 내보내는 진단에는 이름이 있어요. type_annotation_deferred_class는 변수 선언의 타입 애너테이션이나 캐스트(as), 타입 테스트(is)에 쓰인 타입이 지연(deferred) import로 가져온 라이브러리에 선언된 타입일 때 Dart 분석기가 알려주는 진단이에요. 이런 타입은 컴파일 시점에 사용할 수 있어야 하는데, 지연 import로는 그렇게 할 수 없어요.
본문
설명
분석기는 변수 선언의 타입 애너테이션, 또는 캐스트(as)나 타입 테스트(is)에 쓰인 타입이 지연 import로 가져온 라이브러리에 선언된 타입일 때 이 진단을 만들어요. 이런 타입은 컴파일 시점에 사용할 수 있어야 하는데, 그렇지 않기 때문이에요.
자세한 내용은 라이브러리를 지연 로딩하기 문서를 확인해 보세요.
예시
다음 코드는 매개변수 f의 타입을 지연 라이브러리에서 import 했기 때문에 이 진단을 만들어요.
import 'dart:io' deferred as io;
void f(io.File f) {}
흔한 해결 방법
import 한 타입을 참조해야 한다면 deferred 키워드를 제거해요.
import 'dart:io' as io;
void f(io.File f) {}
import를 반드시 지연(deferred)으로 유지해야 하고, 그에 알맞은 다른 타입이 있다면, 지연 라이브러리의 타입 대신 그 타입을 사용해요.