2つのAMD依存関係を持つChrome拡張コンテンツスクリプトがあります。requirejsの「require」関数を使用して依存関係をロードすると、スクリプトは正常に機能します。
プロジェクトの残りの部分でスクリプトをTypeScriptに移植し、現在使用しています
import Dependency = require( "Dependency");
モジュールはすべて正常でダンディですが、TSに移植されており、プロジェクトの他の部分でも正常に機能しています。
私の問題は、importステートメントを追加するとすぐに、TSコンパイラーがスクリプトをモジュールにしたいと考えており、生成されたJSでrequirejs "define"を使用してモジュールをインポートすることです。私のChrome拡張機能はこれについてあまり興奮しておらず、実行すると「匿名定義の不一致」エラーが発生します。
スクリプトをモジュールにする代わりに、typescriptコンパイラにrequire関数を使用してモジュールをロードさせる方法はありますか?私はこれについて何かを見つけるのに苦労しています。
これを処理する最良の方法は、実際にcommonjs
フラグを使用してコンパイルしrequire
、モジュールのインポートが値の位置で使用されていない場合、TypeScriptコンパイラが実際にステートメントを発行しないという事実を使用することです。これは、「TypeScriptのモジュール」ページに記載されている「オプションのモジュールロード」の高度なシナリオに似ています。
サンプルコード:
declare var require: any; // If needed
import _a = require('Dependency');
import _b = require('SomeOtherDependency');
var a: typeof _a = require('Dependency');
var b: typeof _b = require('SomeOtherDependency');
// Use 'a' and 'b' in your code. Do not use _a or _b.
a.doSomething();
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加