14

TypeScript内でモジュールをインポートしたり、uriから定義ファイルを参照したりすることは可能ですか?

アプリケーションに RequireJS を使用しており、一部の定義ファイルと TypeScript (または生成された JavaScript) ファイルをプロジェクトに直接含めるのではなく、CDN から提供したいと考えています。

定義ファイル
の参照 TypeScript では、次のように定義ファイルを参照できます。

/// <reference path="jquery-1.8.3.d.ts" />

ただし、やりたいことは次のとおりです。

/// <reference path="https://github.com/borisyankov/DefinitelyTyped/raw/master/jquery/jquery-1.8.d.ts" />

export class UsesSomethingFromJQuery {

    TestMethod(element: JQuery) {
        // Do something with the supplied element
    }

}

注: Boris の github リンクを CDN として使用する予定はありません。リンクを使用して概念を示しました。

TypeScript ファイルのインポート
次のように、一般的な Web サイトからモジュールをインポートすることもできます。

import OtherModule = module('http://some-internal-site/ts/other');

export class UsesSomethingFromOther {

    TestMethod(c: OtherModule.TestClass) {

    }

}

ただし、モジュールの uri を指定すると、「無効なインポート パス」というエラーが表示されます。

解決しようとして
いるもの コントロール用の JavaScript を生成する TypeScript ファイルのライブラリ、いくつかの REST サービス ラッパー、およびその他のユーティリティがあります。これらの共通コントロールを他の Web アプリケーションで使用したいと考えています。

共通コア内で定義されたクラスに依存する Web サイトの 1 つに固有の (したがって共通コアの一部ではない) TypeScript ファイルがある場合、URI を使用して依存関係を参照したいと考えています。したがって、上記の質問。

これらが単なる JavaScript ソース ファイルである場合は、内部 CDN でそれらをホストし、そこから参照しますが、TypeScript のコンパイル手順で問題が発生します。私たちはこれに間違った方法で取り組んでいますか? より良い方法はありますか?

4

1 に答える 1

4

JavaScript の出力を CDN からサーバーするのは良い考えだと思います。これは、モジュール ローダーまたはスクリプト タグのいずれかに影響を与えますが、.d.tsファイルは実行時に必要ありません。

この RequireJS と TypeScript の jQuery の例を調整して、このようにファイルをリモートでロードすることができます...

  1. ローカル定義ファイル ( .d.ts)
  2. を使用したリモート ランタイム ファイルrequire.config

app.ts

///<reference path="require.d.ts" />
///<reference path="jquery.d.ts" />

require.config({
  paths: {
    'jquery' : 'https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min'
  }
});

require(['jquery'], function (jquery) {
    jquery(document).ready(() => {
        alert('Your code executes after jQuery has been loaded.');
    });
});
于 2013-01-26T14:06:13.123 に答える