TypeScriptでAMDパターンを使用してロードしたいjQueryプラグインがいくつかあります。たとえば、私はこの構造を持っているかもしれません:
/lib/jquery.myplugin.js
/app.ts
プラグインは単にjQueryを拡張します。新しいトップレベルの関数や変数は提供されません。例は次のとおりです。
// jquery.myplugin.js
jQuery.fn.myExample = function() { ... }
対応するjquery.myplugin.d.tsファイルは次のようになります。
interface JQuery {
myExample();
}
これで、app.tsで。のようなものを呼び出すことができます$('#my-element').myExample()
。これは、Microsoftからのjquery.d.ts宣言がすでにロードされていることを前提としていることに注意してください。
私の質問は、このライブラリを非同期でロードし、TypeScriptの静的型付けを利用するにはどうすればよいですか?私はそれを次のように使うことができます:
/// <reference path="lib/jquery.myplugin.d.ts"/>
ただし、HTMLにタグを追加する必要が<script>
あり、ライブラリは非同期で読み込まれません。TypeScriptに次のコードを生成させたい:
define(["require", "exports", "lib/jquery.myplugin"], function (require, exports, __jquery.myplugin__) {
...
// Use my plugin
$('#my-element').myExample();
}
ただし、.d.tsファイルにエクスポートがないため、書き込むことができませんimport myplugin = module('lib/jquery.myplugin')
。
私が得た最も近いものはjquery.myplugin.d.ts
、インターフェイス宣言を使用して別のtsファイルを参照し、少なくとも1つのエクスポートを含むを作成することです。ただし、このライブラリにはエクスポートするものがありません。目的の出力を取得するには、エクスポートを追加するだけでなく、それを呼び出す必要があります。
更新: typescript.codeplex.comでこのための作業項目を開きました