타입 매개변수로 확장되는 타입 별칭은 인스턴스화할 수 없음
타입 매개변수로 확장되는 타입 별칭은 인스턴스화할 수 없음 (instantiate_type_alias_expands_to_type_parameter)
이 문서는 Dart 분석기(analyzer)가 만들어 내는 instantiate_type_alias_expands_to_type_parameter 진단(diagnostic)에 대한 상세한 내용을 설명하는 문서예요. 간단히 말하면, 타입 매개변수(type parameter) 하나로 확장되는 타입 별칭(type alias)을 인스턴스화하려 할 때 분석기가 이 진단을 알려 줘요. 왜 안 되는지 살펴볼게요.
본문
진단 메시지
Type aliases that expand to a type parameter can't be instantiated.
타입 매개변수로 확장되는 타입 별칭은 인스턴스화할 수 없어요.
설명
분석기는 인스턴스화하려는 타입이 타입 별칭의 타입 매개변수 중 하나로 확장되는 타입 별칭인데 생성자 호출이 발견되면 이 진단을 만들어 내요. 이 경우는 허용되지 않아요. 타입 매개변수의 값은 클래스가 아니라 한낱 타입이기 때문이에요.
예시
다음 코드는 A가 타입 매개변수 하나와 동일하게 정의된 타입 별칭인데도 A<int>()로 인스턴스를 만들려고 하기 때문에 이 진단을 만들어 내요.
typedef A<T> = T;
void f() {
const A<int>();
}
일반적인 해결 방법
타입 매개변수로 정의된 타입 별칭 대신, 클래스 이름이나 클래스로 정의된 타입 별칭을 사용하면 돼요.
typedef A<T> = C<T>;
void f() {
const A<int>();
}
class C<T> {
const C();
}
더 알아보기
- Dart 분석기 진단 목록에서 다른 진단들도 함께 살펴보세요.
- 타입 별칭에 대해 더 자세히 알고 싶다면 Typedefs 문서를 참고해요.