리다이렉트 대상이 클래스가 아니에요

리다이렉트 대상이 클래스가 아니에요 (redirect_to_non_class)

이 문서는 Dart 분석기(analyzer)가 만들어 내는 redirect_to_non_class 진단(diagnostic)에 대한 상세한 내용을 설명하는 문서예요. 팩토리 생성자가 생성자가 아닌 다른 무언가로 리다이렉트할 때 분석기가 이 진단을 알려 줘요. 어떤 상황에서 발생하고 어떻게 고치는지 함께 알아볼게요.

출처: redirect_to_non_class

본문

진단 메시지

The name '{0}' isn't a type and can't be used in a redirected constructor.

이름 '{0}'은(는) 타입이 아니어서 리다이렉트된 생성자에서 사용할 수 없어요.

설명

팩토리 생성자를 구현하는 한 가지 방법은 생성자의 이름을 참조해서 다른 생성자로 리다이렉트하는 거예요. 분석기는 그 리다이렉트 대상이 생성자가 아닐 때 이 진단을 만들어 내요. 리다이렉트는 반드시 생성자를 가리켜야 하는데, 그게 아니라면 타입이 아니라는 뜻이에요.

예시

다음 코드는 f가 함수이기 때문에 이 진단을 만들어 내요.

C f() => throw 0;

class C {
  factory C() = f;
}

일반적인 해결 방법

생성자가 정의돼 있지 않다면, 생성자를 정의하거나 이미 정의된 생성자로 바꿔 주세요.

생성자는 정의돼 있지만 그 생성자를 정의한 클래스가 안 보인다면, 아마 import 구문을 추가해 줘야 할 거예요.

함수가 돌려주는 값을 반환하려는 거였다면, 생성자 본문에서 그 값을 돌려주도록 생성자를 다시 작성해 주세요.

C f() => throw 0;

class C {
  factory C() => f();
}

더 알아보기