제한된 타입을 서브타입으로 만들 수 없음
제한된 타입을 서브타입으로 만들 수 없음 (subtype_of_disallowed_type)
이 문서는 Dart 분석기(analyzer)가 만들어 내는 subtype_of_disallowed_type 진단(diagnostic)에 대한 상세한 내용을 설명하는 문서예요. 언어가 특별히 제한해 둔 타입을 상속·구현·믹스인할 때 분석기가 이 진단을 알려 줘요. 어떤 상황에서 발생하고 어떻게 고치는지 함께 알아볼게요.
본문
진단 메시지
'{0}' can't be used as a superclass constraint.
'{0}'은(는) 슈퍼클래스 제약(superclass constraint)으로 사용할 수 없어요.
Classes and mixins can't implement '{0}'.
클래스와 믹스인은 '{0}'을(를) 구현(implement)할 수 없어요.
Classes can't extend '{0}'.
클래스는 '{0}'을(를) 상속(extend)할 수 없어요.
Classes can't mixin '{0}'.
클래스는 '{0}'을(를) 믹스인(mixin)할 수 없어요.
설명
분석기는 bool, double, FutureOr, int, Null, num, String 클래스처럼 제한된 클래스 중 하나가 extends, implements, with 또는 on 절에서 사용될 때 이 진단을 만들어 내요. 이 클래스들은 모두 이런 방식으로 제한되어 있어서 더 효율적으로 구현할 수 있게 해 줘요.
예시
다음 코드는 String이 extends 절에서 사용되기 때문에 이 진단을 만들어 내요.
class A extends String {}
다음 코드는 String이 implements 절에서 사용되기 때문에 이 진단을 만들어 내요.
class B implements String {}
다음 코드는 String이 with 절에서 사용되기 때문에 이 진단을 만들어 내요.
class C with String {}
다음 코드는 String이 on 절에서 사용되기 때문에 이 진단을 만들어 내요.
mixin M on String {}
일반적인 해결 방법
다른 타입을 지정해야 한다면, 타입을 바꿔 주세요.
class A extends Object {}
알맞은 다른 타입이 없다면, 타입을 제거하고 필요에 따라 절 전체를 제거해 주세요.
class B {}
더 알아보기
- Dart 분석기 진단 목록에서 다른 진단들도 함께 살펴보세요.
- 제한된 타입과 관련한 언어 규칙은 Dart 공식 문서를 참고해요.