我有一個接口,我只想在命名空間(內部模塊)內使用,它不應該在名稱空間外使用。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'的私有成員,它也是我自己在同一個命名空間中定義的新類型/類,並且是使用命名空間的真正原因,因爲類型'Location'已經存在於全局空間中。
類具有名稱衝突如果使用的話外名稱空間:
namespace Test {
class Location {
private name: string = null;
constructor(name: string) {
this.name = name;
}
}
}
此外:我不使用任何模塊,我將一些類型的從JavaScript到打字原稿類。使用/// <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