타입이 자기 자신을 상속·구현할 수 없음

타입이 자기 자신을 상속·구현할 수 없음 (recursive_interface_inheritance)

이 문서는 Dart 분석기(analyzer)가 내는 recursive_interface_inheritance 진단(diagnostic)을 설명하는 문서예요. 어떤 타입이 직접 또는 간접적으로 자기 자신의 하위 타입이 되려고 하면 타입 계층 구조에 순환이 생기는데요. 언제 발생하고 어떻게 고치는지 함께 알아볼게요.

출처: recursive_interface_inheritance

본문

진단 메시지

'{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)이 있을 때 이 진단을 만들어 내요. 즉 어떤 타입이 직접 또는 간접적으로 자기 자신의 하위 타입으로 선언된 경우예요.

예시

다음 코드는 클래스 AB의 하위 타입으로, BA의 하위 타입으로 선언되어서 이 진단을 만들어 내요.

class A extends B {}

class B implements A {}

일반적인 해결 방법

타입 계층 구조에서 순환이 생기지 않도록 바꿔 주세요.

더 알아보기