const 생성에서는 타입 매개변수를 타입 인자로 쓸 수 없어요
const 생성에서는 타입 매개변수를 타입 인자로 쓸 수 없어요
타입 매개변수를 const 호출의 타입 인자로 사용할 때 분석기가 이 진단을 띄워줘요. 런타임에서 실제로 쓰일 타입은 컴파일 시점에 알 수 없기 때문이에요.
출처: A constant creation can't use a type parameter as a type argument
본문
분석기는 const 생성자 호출에서 타입 매개변수를 타입 인자로 사용할 때 이 진단을 만들어요. 이게 안 되는 이유는 타입 매개변수의 값, 즉 런타임에 실제로 쓰일 타입을 컴파일 시점에 알 수 없기 때문이에요.
다음 코드는 상수를 만들 때 타입 매개변수 T를 타입 인자로 쓰고 있어서 이 진단이 나와요.
class C<T> {
const C();
}
C<T> newC<T>() => const C<T>();
고치는 방법
타입 매개변수에 실제로 쓰일 타입을 컴파일 시점에 알 수 있다면, 타입 매개변수 사용을 없애면 돼요.
class C<T> {
const C();
}
C<int> newC() => const C<int>();
만약 타입 매개변수에 쓰일 타입을 런타임이 되어서야 안다면, const 키워드를 빼면 돼요.
class C<T> {
const C();
}
C<T> newC<T>() => C<T>();