2017-03-08 7 views
2

私はBackbone、Marionette、Backbone Associationsで構築されたWebアプリケーションにTypeScriptを使用しています。モジュールをTypescriptでグローバルに使用できると宣言できますか?

import * as _ from "underscore"; 
import * as Backbone from "backbone"; 
import * as Marionette from "backbone.marionette"; 
import "backbone-associations"; 

これは潜在的に何百もの可能性:

これらのライブラリはどこでもWebPACKののProvidePluginを使用しますが、幸せなTSコンパイラを維持するために同梱して利用できるようになり、私は自分のアプリケーション内のすべてのモジュールに以下を追加する必要がありますモジュール/ファイル。

これらは一般に利用可能であるとTypeScriptに通知することはありますか?おそらくtsconfig.jsonのいくつかの設定?

答えて

-1

これは(たとえば)underscoreタイピングによって異なります。 TS 2+を使用している場合、コンパイラはnode_modules/@types/...内のすべての入力を受け取ります。 tsconfig.jsontypingsプロパティで自分自身を指定することもできます。 See the docs.

TypeScript tries to prevent you from mixing UMD and ES modules.それは次のようなエラーが表示されます:この周り

"_" refers to a UMD global, but the current file is a module. 
Consider adding an import instead. 

一つの方法は、カスタム.d.tsファイルを作成することで、あなたがglobal.d.ts.重要ではありません、それを呼び出すことができます。あなたのTSプロジェクトでそれを入れて、次の行を追加します。今すぐ

import * as _ from 'underscore'; 

declare global { 
    const _:_.UnderscoreStatic; 
} 

underscoreは世界的に利用可能である必要がありますし、また、UMD + ES import/export文を混在させることができるはずです。 You can find more info about this in the docs

+1

私はTS 2.2.1を使用していますが、すべての入力は 'node_modules/@ types'にありますが、上記のインポートを特定のモジュールから削除してもエラーは発生します。私はおそらく、*すべてのファイルのどこに*輸入する必要があると思ったでしょうか。膨大な数のモジュールがあるので、それらをすべて削除しようとする前に知りたいのですが。 – user888734

+0

あなたはあなたの質問に苦しんでいるエラーを追加する必要があります。それ以外の場合は、あなたのTS設定にも依存するため、あなたがどのような問題を抱えているのかを推測することは困難です。 –

関連する問題