名前空間(内部モジュール)内でのみ使用したいインターフェイスがあり、名前空間の外側で使用しないでください。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
もう1つの質問は、内部インターフェイスや名前ペースやモジュール内のインターフェイスのアクセシビリティについては言及していません。 – Huupke
はい、新しいプロジェクトを開始する場合は、モジュールに切り替えることを検討する必要があります。それは単なる提案です。 :) – Paleo