2

重複の可能性:
TypeScriptでAMDを介してjqueryを要求する方法

でプロジェクトを作成しましたTypeScript。私は使用しますRequireJS。必要になるまで、すべてが正常に機能していましたJQuery...

これは私のファイル構造です:

ファイル構造

ご覧のとおりjquery-1.8.d.ts、フォルダ内にファイルがありmodulesます。の.jsファイルはフォルダjQuery内にありlibます。次の設定ファイルを使用してモジュールをインポートすると、次のようになりますRequireJS

/// <reference path="../modules/require.d.ts" />
/// <reference path="AppMain.ts" />

require.config({
    baseUrl: '../',
    paths: {
        jquery: 'lib/jquery-1.8.3'
    },
    shim: {
        jquery: {
            exports: '$'
        }
    },
    name: "app/AppMain",
    out: "../!built/Test.js",
    optimize: "none"
});

require(['jquery', 'app/AppMain',
],
    ($, main) => {
        var appMain = new main.AppMain();
        appMain.run();
    });

...次に、にインポートされJavaScriptます。中に入れたい場合はどうすればいいですTypeScriptか?ファイル内で宣言されたJQuery、、JQueryStaticを使用する必要があります。JQueryPromise.d.ts

新しいモジュールをインポートしようとすると、エラーが発生します。

import JQueryExternal = module("../../../modules/jquery-1.8.d"); // error: The name does not exist in the currect scope. A module cannot be aliased to a non-module type
interface Test {
    MyMethod(): JQueryPromise; // here's a sample usage
}

最初はパスが間違っていると思っていたのですが、classesフォルダ内に移動してみて、次に他のクラスと同じようにインポートしました。同じエラー:/

私がしたい方法で使用jQueryする方法は?TypeScript出来ますか?

4

2 に答える 2

3

これは完全に混乱しています:

import JQueryExternal = module("../../../modules/jquery-1.8.d");

TypeScriptで使用するために、定義ファイルをモジュールとしてインポートしません。AMD / RequireJSまたはNode.jsスタイルのモジュールを使用して最終的なコードをインポートするかどうかに関係なくd.ts、ドキュメントの上部で常に同じ方法で定義ファイルを参照します。

/// <reference path="YOUR-RELATIVE-PATH-HERE/jquery.d.ts" />

これにより、ライブラリがJavaScriptで使用可能になるわけではありませんが、 TypeScriptを作成するときに定義が使用可能になります。

私は、RequireJSとJQueryを多用する、スコープが似ている大規模なアプリケーションに取り組んでいます。JQueryをモジュールとしてロードするメリットはわかりません。(上記のように)参照をインポートし、ページが最初にJQuery(およびその他のライブラリ)をロードすることを確認します。

<script type="text/javascript" src="//ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.2.min.js"></script>
<script type="text/javascript" src="//ajax.aspnetcdn.com/ajax/jquery.ui/1.9.0/jquery-ui.min.js"></script>
... etc ...
<script type="text/javascript" src="/content/client/libs/require.js" data-main="/content/client/pe.framework"></script>
于 2013-01-25T17:39:38.827 に答える
2

これら2つをうまく組み合わせるのに問題があったため、requireJSをJQueryで使用する場合は、両方をロードするバンドルバージョンを使用します。ただし、typescriptはわからないので、これがどれほど役立つかはわかりません。

バンドルへのリンク:https ://github.com/jrburke/require-jquery

于 2013-01-25T16:02:40.147 に答える