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