타입이 자기 자신을 상속·구현할 수 없음
타입이 자기 자신을 상속·구현할 수 없음 (recursive_interface_inheritance)
이 문서는 Dart 분석기(analyzer)가 내는 recursive_interface_inheritance 진단(diagnostic)을 설명하는 문서예요. 어떤 타입이 직접 또는 간접적으로 자기 자신의 하위 타입이 되려고 하면 타입 계층 구조에 순환이 생기는데요. 언제 발생하고 어떻게 고치는지 함께 알아볼게요.
본문
진단 메시지
'{0}' can't be a superinterface of itself: {1}.
'{0}'은(는) 자기 자신의 수퍼인터페이스(superinterface)가 될 수 없어요: {1}.
'{0}' can't extend itself.
'{0}'은(는) 자기 자신을 extend 할 수 없어요.
'{0}' can't implement itself.
'{0}'은(는) 자기 자신을 implement 할 수 없어요.
'{0}' can't use itself as a mixin.
'{0}'은(는) 자기 자신을 mixin으로 사용할 수 없어요.
'{0}' can't use itself as a superclass constraint.
'{0}'은(는) 자기 자신을 수퍼클래스 제약(superclass constraint)으로 사용할 수 없어요.
설명
분석기는 타입 계층 구조에 순환(circularity)이 있을 때 이 진단을 만들어 내요. 즉 어떤 타입이 직접 또는 간접적으로 자기 자신의 하위 타입으로 선언된 경우예요.
예시
다음 코드는 클래스 A가 B의 하위 타입으로, B가 A의 하위 타입으로 선언되어서 이 진단을 만들어 내요.
class A extends B {}
class B implements A {}
일반적인 해결 방법
타입 계층 구조에서 순환이 생기지 않도록 바꿔 주세요.
더 알아보기
- Dart 분석기 진단 목록에서 다른 진단들도 함께 살펴보세요.
- 클래스가 다른 클래스를 어떻게 상속하고 구현하는지는 Dart 공식 문서의 클래스 문서를 참고해요.