Dojo1.8はすでにAMDモジュールを定義しています。たとえば、次のようなことができます。
require(["dojo/_base/lang"], function (lang) {
var ab = lang.mixin({a: 1}, {b: 2});
});
しかし、このモジュールをインポートしようとしたときにエラーが発生しないようにするにはどうすればよいですか?
import lang = module ("dojo/_base/lang");
可能ですか?
Dojo1.8はすでにAMDモジュールを定義しています。たとえば、次のようなことができます。
require(["dojo/_base/lang"], function (lang) {
var ab = lang.mixin({a: 1}, {b: 2});
});
しかし、このモジュールをインポートしようとしたときにエラーが発生しないようにするにはどうすればよいですか?
import lang = module ("dojo/_base/lang");
可能ですか?
lang の typescript 定義ファイルが必要になります。このコードlang.d.ts
と同じディレクトリに存在すると仮定します。lang.js
import lang = module('dojo/_base/lang')
var ab = lang.mixin({a: 1}, {b: 2});
でコンパイル
tsc --module amd yourfile.ts
生成する
define(["require", "exports", 'dojo/_base/lang'], function(require, exports, __lang__) {
var lang = __lang__;
var ab = lang.mixin({a: 1}, {b: 2});
}
なんらかの理由でディレクトリ構造を一致させたくない場合は、代わりにこれを行ってください。の兄弟であるlang.d.ts
というサブディレクトリにあると仮定します。3rd
test.ts
test.ts:
///<reference path="3rd/lang.d.ts"/>
import lang = module('dojo/_base/lang');
var ab = lang.mixin({a: 1}, {b: 2});
3rd/lang.d.ts:
declare module 'dojo/_base/lang' {
...
}
上記と同じものを生成します。
通常は dojo ローダーを介してモジュールをロードできます。import ステートメントを使用する必要はありません。ただし、必要に応じてモジュールを宣言する必要があります。
declare module "dojo/_base/lang" {
export function ...
export class ...
}