await_of_incompatible_type
await_of_incompatible_type
Dart 애널라이저가 생성하는 await_of_incompatible_type 진단에 대한 설명이에요. await 표현식의 타입이 Future의 하위 타입이 아닌 확장 타입(extension type)일 때 발생해요.
출처: 원문
본문
await 표현식 안에 있는 표현식의 타입이 확장 타입(extension type)이고, 그 확장 타입이 Future의 하위 타입이 아닐 때 이 진단이 발생해요.
예시
아래 코드는 확장 타입 E가 Future의 하위 타입이 아니기 때문에 이 진단을 만들어요.
extension type E(int i) {}
void f(E e) async {
await e;
}
일반적인 수정 방법
확장 타입이 올바르게 정의되었다면 await를 제거해요.
extension type E(int i) {}
void f(E e) {
e;
}
확장 타입이 await가 가능하도록 만들려면 implements 절에 Future(또는 Future의 하위 타입)를 추가하고, 이미 절이 없다면 implements 절을 추가한 다음, 표현 타입(representation type)이 일치하도록 만들어요.
extension type E(Future<int> i) implements Future<int> {}
void f(E e) async {
await e;
}
더 알아보기
확장 타입(extension type)과 await, 비동기 프로그래밍에 대한 더 자세한 내용은 Dart 언어 문서와 API 문서를 참고해요.