Backbone
に依存するモジュールがあります。私はbackbone.d.ts
定義を持っていますが、TypeScriptは、私のモジュールをコンパイルしない限り、モジュールをコンパイルしたくないようです。
import Backbone = module("backbone")
実際には、定義ファイルではなく、有効なバックボーンモジュールを指しています。 AMDがロードされたモジュールを使用しており、バックボーンにrequirejsシムが定義されています。
電話のbackbone.tsモジュール定義を作成する以外に回避策はありますか?
更新:ソリューションの副作用は、モジュールが存在しなくなったため、このようなコードが機能しなくなることです。 requirejsシムのために存在する必要があります。私が知っている唯一の回避策は、2つの.d.tsファイルを用意することです。 1つは、バックボーンをインポートとして使用し、declare module
ビットを含まないファイル用です。もう1つは、/// <reference
行を含むdeclare module
を使用するためのものです。
/// <reference path="../dep/backbone/backbone.d.ts" />
interface IApi {
version: number;
Events: Backbone.Events;
}
TypeScript言語は、この最初の回答からかなり変更されています。
たとえば、外部モジュールをインポートするには、require
を使用します(私の元の回答には古いmodule
キーワードが含まれていました)。
これは、バックボーンをインポートするための一般的な使用例です-DefinitelyTypedからの型情報を使用します。
_/// <reference path="scripts/typings/backbone/backbone.d.ts" />
import bb = require('backbone');
_
タイプ定義内で、バックボーンモジュールが宣言されます。これにより、インポートが有効になります。
_//... lots of code and then...
declare module "backbone" {
export = Backbone;
}
_
したがって、元の質問は次を使用して解決できます...
_/// <reference path="scripts/typings/backbone/backbone.d.ts" />
import bb = require('backbone');
interface IApi {
version: number;
Events: bb.Events;
}
class Api implements IApi {
public version = 1;
public Events: bb.Events = null;
}
_
このコード例では、これが必要なすべてです-しかし、多くの場合、実行時にバックボーンライブラリをロードする必要があります...(公式に実験的な)_AMD-dependency
_コメントを使用して、生成されたdefine
関数呼び出しに含めることができます背骨。
_/// <reference path="scripts/typings/backbone/backbone.d.ts" />
/// <AMD-dependency path="backbone" />
import bb = require('backbone');
interface IApi {
version: number;
Events: bb.Events;
}
class Api implements IApi {
public version = 1;
public Events: bb.Events = null;
}
_
[〜#〜] amd [〜#〜] in TypeScript を処理する別の方法が実際にあります:
クローンを作成する DefinitelyTyped Githubリポジトリ。これには、_jquery.d.ts
_、_backbone.d.ts
_、およびその他の多くの定義ファイルが含まれています。
定義ファイルを_myfile.ts
_ファイルにリンクします。
_/// <reference path="DefinitelyTyped/requirejs/require.d.ts" />
_
_/// <reference path="DefinitelyTyped/jquery/jquery.d.ts" />
_
AMDの依存関係をjavascriptライブラリに追加します。
_/// <AMD-dependency path="jquery"/>
_
_$
_ファイル内で_myfile.ts
_を使用するには、requireを呼び出すことができます。var $ = require("jquery");
_myfile.ts
_のフルバージョン:
_/// <reference path="DefinitelyTyped/requirejs/require.d.ts" />
/// <reference path="DefinitelyTyped/jquery/jquery.d.ts" />
/// <AMD-dependency path="jquery"/>
var $ = require("jquery");
export function helloWorld() {
$("<div>Hello World</div").appendTo(document.body);
}
_
_tsc --module AMD myfile.ts
_を実行すると、次のjavascriptコードが得られます。
_define(["require", "exports", "jquery"], function(require, exports) {
var $ = require("jquery");
function helloWorld() {
$("<div>Hello World</div").appendTo(document.body);
}
exports.helloWorld = helloWorld;
});
_