「Shared」と呼ばれるモジュールを含むd.tsファイルと、NodeJS環境で使用されている場合は同じ名前の変数を含むrequireステートメントが含まれているため、問題が発生していると確信しています。
// shared.d.ts
declare module Shared { ... }
// other_module.ts
/// <reference path="shared.d.ts"/>
if(require) { var Shared = require("shared"); }
export class Something {
public someVar = new Shared.SomethingElse("blah");
}
したがって、コンパイルするother_module.ts
と(実際には多くの個別のファイルです)、Sharedは重複した識別子であることがわかります。これは、TSがSharedをモジュールと見なしているため理解できますが、requireの戻りであると言われています。
ここでの問題は、モジュールの出力が nodeJS の require システムと互換性がある必要があることです。そのため、この場合、other_module が必要な場合、それは独自のスコープ内にあり、認識されないため、require が必要になるShared.SomethingElse
ため、内部モジュールはother_module
共有ライブラリにアクセスできますが、ブラウザ環境ではShared.SomethingElse
グローバル スコープを介して取得されます。
Shared
モジュールが nodejs( var otherModule = require("other_module")
) にロードされたときに require を削除すると、について知らないため、参照を削除するとファイルはコンパイルされませんShared
。それで、これを解決する方法はありますか?