2017-10-31 2 views
-1

순환 참조가있는 타이 스크립트 프로젝트가 있습니다. 클래스 A는 클래스 B를 참조하고 클래스 B는 클래스 A를 참조합니다. 또한 export 문을 포함하는 외부 모듈이 있습니다. 나는 이것을 바꿀 수 없다.순환 참조 및 가져온 모듈을 Typescript로 허용합니다.

접근 한

사용 가져 오기 문 :

import { ClassName } from './path/to/the/file'; 

이 순환 참조를 허용하지 않습니다. 순환 참조를 피하기 위해 코드를 다시 작성하는 것은 나를위한 선택 사항이 아닙니다.

접근

이이 같은 프로젝트에있는 모든 파일을 참조 하나 개 definitions.d.ts 파일 유무 :

/// <reference path="path/to/the/file"/> 

다음을, 모든 코드 파일에 정의 파일은 같은 방식으로 참조됩니다.

이 솔루션은 순환 참조를 허용하는 것으로 보입니다. 그러나 export 문을 사용하는 외부 모듈 파일은 이와 같이 참조 할 수 없으므로 import 문을 사용해야합니다. 문제는 파일에서 import 문을 사용하면 모듈이 된 것으로 보이며 더 이상 /// <reference 지시어를 사용하여 참조 할 수 없다는 것입니다.

순환 참조와 외부 모듈을 허용하는 좋은 프로젝트 구조는 무엇입니까?

편집 : 두 파일을 같은 파일에 넣는 것은 내가 원하는 것입니다. 각 클래스에 대해 별도의 파일을 유지하면서 동일한 목표를 달성 할 수있는 방법이 있습니까?

답변

-1

순환 참조를 피하고 많은 옵션과 많은 문제가 없어야합니다. 클래스 A와 클래스 B가 포함 된 클래스 C를 만들고 A와 B 사이의 내부 참조를 피하고 클래스 C에 혼합 된 기능을 구현해야합니다.

+0

순환 참조의 문제점은 무엇입니까? 많은 상용구 코드를 추가하는 것을 피하고 싶습니다. – Toast

+0

제 경우에는 부모 클래스가 그 서브 클래스를 참조합니다. – Toast

+0

원형 솔루션은 확장 가능하지 않으며 툴링 및 IDES에서 지원되지 않으며 원형 참조를 피하는 데 도움이되는 것으로 알려진 많은 다른 구성 또는 구조 패턴 (감마 - 헬름 - 존슨 및 Vlissides 의미에서)이 있습니다. 복합 또는 외관 패턴과 동일합니다. –