네임 스페이스 (내부 모듈) 내에서만 사용할 인터페이스가 있으며 네임 스페이스 외부에서 사용해서는 안됩니다.TypeScript : 네임 스페이스 내에서 내부 인터페이스를 사용하는 방법
예 인터페이스 : 나는 (내가 싶지 않아) 인터페이스를 내 보내지 않으면 같은 네임 스페이스 내에서이 인터페이스를 구현하려고 할 때
namespace Test {
interface IInterface {
getId(): number;
getName(): string;
}
}
불행하게도 나는 오류가 발생합니다.
구현 클래스 : 제공
namespace Test {
class Implementer implements IInterface {
private location: Location;
public getId(): number {
return 1;
}
public getName(): string {
return "implementer name";
}
}
}
: TS2304이 : 이름이 '는 IInterface'을 찾을 수 없습니다. 'Implementer.ts'의
'Location'형식의 private 멤버는 동일한 네임 스페이스에서 나 자신이 정의한 새로운 유형/클래스이기도하며 'Location'유형이 이미 전역 공간에 있으므로 네임 스페이스를 사용하는 실제 이유입니다. 충돌하는 이름을 가진
클래스 네임 스페이스 외부에서 사용하는 경우 : 또한
namespace Test {
class Location {
private name: string = null;
constructor(name: string) {
this.name = name;
}
}
}
: 어떤 모듈을 사용하지 않는 내가 클래스를 타이프 자바 스크립트에서 몇 가지 유형을 전환하고있다. /// <reference path="IInterface.ts" />
도우미를 사용하면 작동하지 않으며 여기서는 문제가되지 않습니다. 나는 또한 어떤 모듈 로더도 소개하고 싶지 않다.
그렇다면 인터페이스를 내보내지 않고 동일한 네임 스페이스에서 내 인터페이스를 사용하려면 어떻게해야합니까?
아마 관련 : http://stackoverflow.com/questions/39827281/modules-vs-namespaces-what-is-the-correct-way-to-organize-a-large-typescript-p/39827997#39827997 – Paleo
다른 질문은 내부 인터페이스 또는 네임 페이 또는 모듈 내의 인터페이스의 액세스 가능성을 언급하지 않습니다. – Huupke
예.하지만 새 프로젝트를 시작하면 모듈로 전환하는 것을 고려해야합니다. 그것은 단지 제안 일뿐입니다. :) – Paleo