5

この ts モジュールがある場合:

export function say(){
    console.log("said");
}

amd オプションを使用してコンパイルすると、ts クライアントから非常に簡単に使用できます。

import foo = module("tsmodule")
foo.say();

export var x = 123;

ただし、ts モジュールに相当する JavaScript がある場合:

define(["require", "exports"], function(require, exports) {
    function say() {
        console.log("said");
    }
    exports.say = say;
})

安易に使う方法はありません。最も簡単な解決策:

// of course you can use .d.ts for requirejs but that is beside the point
declare var require:any;

// will fail with error module has not been loaded yet for context
// http://requirejs.org/docs/errors.html#notloaded
var useme = require("jsmodule")
useme.say();

export var x = 123;
import foo = module("tsmodule")
foo.say();

エラーhttp://requirejs.org/docs/errors.html#notloadedが原因で失敗します。生成された typescript の define 呼び出しに「jsmodule」が渡されなかったためです。

私が持っている2つの回避策

  • インポート/エクスポートを使用しないでください (言語機能が失われます)
  • require([]) を使用します (require([]) 呼び出しに依存するものはまだエクスポートできません)

制限があります: https://github.com/basarat/typescript-requirejs。別の方法はありますか?そうでない場合は、ここで投票できます: https://typescript.codeplex.com/workitem/948 :)

4

1 に答える 1