なぜ他の誰もこの問題を抱えていないのか、それとも私がそれを説明するのに適切な言葉を使っていないだけなのか、少し疑問に思っています。問題は、バージョンが必要な npm に公開するモジュールがあることです。1 つは system-js を介してロードし、npm から直接使用できます。もう 1 つのバージョンは、system-js-builder で作成した自己実行バンドルです。
モジュールが@company/fooと呼ばれていると仮定しましょう 。ルート フォルダーに index.ts があり、src からすべてをエクスポートするだけです。ここには、すべてのサブモジュールがエクスポートされる index.ts もあります。したがって、index.ts は次のようになります。
export * from "./src/";
そして、それを使用したいモジュールでは、次のように簡単に使用できます。
import { bar } from "@company/foo";
ここまでは簡単。いいえ、インデックスから自己実行バンドルを作成し、グローバル名fooを付けて、スクリプトをページに追加するか、他のスクリプトと連結する場合にfoo.bar()を呼び出すことができるようにします。これもうまくいきます。しかし今、このバンドルのタイピングを作成する方法がわからないという問題があります。私の考えは、次のようなことをすることでした
declare namespace foo {
export * from "./src/";
}
これは、バンドルが何をするかを非常によく説明していると思いました。しかし、typescript はこれを好まない。私もモジュールで何かを試しましたが、何も機能しません。src バレルからエクスポートされたものが名前空間 foo で始まるという事実をどのように説明できますか?
私が達成したいことが明確であることを願っています。