2017-01-05 10 views
2

私はHttpリクエストに使用する小さな「ライブラリ」を作成しています。それはTypeScriptで書かれており、それはHttpという1つのプライマリクラスを持っています。コンパイルされたバンドルを含めた後、私の普通のJavaScriptでこのクラスを使用できるようにしたいので、グローバルに利用できるようにする方法を考えています。TypeScriptでのグローバル変数の作成

私はgulp-tsifyをコンパイラとして使用しています。タイプスクリプトをes5バンドルにコンパイルしますが、それは素晴らしいですが自己呼び出し関数とは異なるスコープです。私のバンドルをコンパイルした後に書き直すと(下のコード)うまくいきますが、バンドルスクリプトを書き直すことなくそのバンドルを達成するにはどうしたらいいですか?私のコンパイル活字体はこのようになります私は何をされることを意味...

:私は(手動で)そのようなグローバルなHTTPを宣言するときに

(function e(t,n,r){ ... })(function(require, module, exports){ 
    ... 
    // Somewhere here I've got var Http_1 = require('/...'); 
}, n, r) 
// console.log(Http_1) -> undefined 

...

var http; 
(function e(t,n,r){ 
    ... 
})(function(require, module, exports){ 
    ... 
    // Somewhere here I've got var Http_1 = require('/...') 
    http = Http_1; 
    // or I can do this without the Http_1 
    http = require('./classes/Http'); 
}, n, r) 
// console.log(http) -> everything's fine 

...ユーザーはhttpオブジェクトを使用することができますが、コンパイラによって自動的に行われます。

TypeScriptの中にdeclare var http = Http;のようなものがあると思っていましたが、実現することができませんでした。Initializers are not allowed in ambient contexts.どうすればいいのでしょうか?ありがとうございました。

+0

あなたはモジュールを使用して活字体ですべてのコードを記述する必要があります。

window['Http'] = Http; 
SLaks

+2

'window ['Http'] = Http;'を試しましたか? – Martin

+0

@マルティンあなたが答えを書くことを検討するなら、それは正しいとマークするでしょう...それはうまくいきます。他の誰かが同様の問題を抱えている場合に備えて。 –

答えて

1

ブラウザグローバルを追加するには、アイテムをウィンドウオブジェクトに追加するだけです。

declare global { 
    interface Window { 
     you: IAreCookingWithFire; 
    } 

    var you: IAreCookingWithFire; 
} 
0

は、特別なグローバルな構文を使用します。
関連する問題