Typescript: インポートせずに外部モジュールのtypeofとして変数を宣言します

作成日 2015年09月08日  ·  3コメント  ·  ソース: microsoft/TypeScript

ちょっと、そこ、

外部(commonjs)モジュール "A"を記述してから、別のモジュール "B"のコードで、インポートを使用せずに変数をtypeofモジュール "A"として宣言して、モジュール "A"を要求することは可能ですか。

これを実行する理由は、モジュール「A」をシングルトンにしたいため、モジュール「A」への参照を別のモジュール「B」のクラスのコンストラクターに渡すためです。 しかし、コンストラクターの引数をモジュール "A"の引数に入力したいのですが、モジュール "A"がimportA = require( "A");を使用してインポートされたかのようになります。

シングルトンモジュールが必要な理由は、このモジュールにデータベース接続などを管理するクラスのインスタンスが含まれている可能性があり、インポートするたびにそれらを再初期化する必要がないためです。 潜在的な「ノードモジュールキャッシュ」の魔法に頼るのではなく、それらを渡すことができるようにしたいと思います。

これを行う方法はありますか? 私は自分が望むことを達成できる他の方法を考えましたが、可能であれば、これは最も簡単なように感じます。

Question

最も参考になるコメント

モジュールのインポートは、値の位置で使用されていない場合は省略されます。 したがって、モジュールAインポートがタイプ位置でのみ使用される場合、 require呼び出しは書き出されません。

例えば:

// B.ts
import s = require("./A");
var x: typeof s;

放出する

var x;

これはあなたの質問に答えますか?

全てのコメント3件

モジュールのインポートは、値の位置で使用されていない場合は省略されます。 したがって、モジュールAインポートがタイプ位置でのみ使用される場合、 require呼び出しは書き出されません。

例えば:

// B.ts
import s = require("./A");
var x: typeof s;

放出する

var x;

これはあなたの質問に答えますか?

おー、それはよかったです! それは間違いなく私の質問に答えます。 ドキュメントでこれを見つけることができなかったので、あなたの助けにトンに感謝します。 :)

こんにちはフォークス、
同じ行にある質問があります。 私は上記の解決策を試しましたが、今ではうまくいきました。
webpackモジュールからクラスをインポートしていますparentimport {A、B} from "parent";
これらのクラスのコンストラクターを呼び出したいだけです。 const a = A({data:1});を試してみましたこれにより、コンパイル時にTSエラーが発生することはありません。 しかし、それは実行時のjavascriptで壊れ、タイプエラーAはコンストラクターではありません。

カスタムタイプを作成してdevDependanciesに追加する必要がありますか? または、デフォルトのエクスポートのように、「親」モジュールをエクスポートする特定の方法はありますか。

どんな助けでも大歓迎です。

乾杯、
スディープ

このページは役に立ちましたか?
0 / 5 - 0 評価