Dojo 1.8已经定义了AMD模块。例如,您可以执行以下操作:
require(["dojo/_base/lang"], function (lang) {
var ab = lang.mixin({a: 1}, {b: 2});
});
但是,当我尝试导入此模块时,如何避免出错?
import lang = module ("dojo/_base/lang");
有可能吗?
答案 0 :(得分:2)
您需要lang的打字稿定义文件。假设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});
第三/ lang.d.ts:
declare module 'dojo/_base/lang' {
...
}
生成与上面相同的内容。
答案 1 :(得分:0)
您通常可以通过dojo加载器加载模块,您不必使用import语句。但是如果你想要你必须声明模块:
declare module "dojo/_base/lang" {
export function ...
export class ...
}