타입이 아닌 이름을 타입 자리에 썼을 때

타입이 아닌 이름을 타입 자리에 썼을 때 (not_a_type)

Dart 애널라이저가 내는 진단 중 하나예요. 어떤 이름을 타입으로 사용했는데, 그 이름이 실제로는 타입이 아닌 다른 것으로 선언되어 있을 때 이 진단이 나와요. 에러 메시지는 "{0} isn't a type." — "{0}은(는) 타입이 아니에요"라는 뜻이죠.

출처: not_a_type

본문

언제 발생하나요?

이름 하나가 타입으로 쓰였는데, 그 이름이 타입이 아닌 다른 것으로 선언되어 있을 때 애널라이저가 이 진단을 만들어요. 선언은 됐지만 타입이 아닌 것(예: 함수, 변수)을 타입이 와야 할 자리에 갖다 쓴 상황인 거예요.

예시

다음 코드는 f가 함수라서 이 진단이 발생해요.

void f() {}
void g(f v) {}

여기서 g의 매개변수 타입 자리에 함수 이름 f를 쓴 게 문제예요. 함수 이름은 타입이 아니니까, f v라는 표기가 성립하지 않죠.

어떻게 고치나요?

그 자리에 실제 타입의 이름으로 바꿔 주면 돼요. 지금은 함수 f를 타입으로 쓰고 있으니, 의도에 맞는 클래스나 기본 타입(예: int, String 같은 것)을 넣으면 문제가 해결돼요.

더 알아보기

  • 타입을 다루는 더 자세한 내용은 Dart 언어의 타입 시스템 문서에서 확인할 수 있어요.
  • 다른 진단과 함께 보려면 Diagnostics 목록을 참고하세요.