2

Dojo 1.8 已经定义了 AMD 模块。例如,您可以执行以下操作:

require(["dojo/_base/lang"], function (lang) {
  var ab = lang.mixin({a: 1}, {b: 2});
});

但是当我尝试导入这个模块时如何避免出错呢?

import lang = module ("dojo/_base/lang");

有可能吗?

4

2 回答 2

2

您将需要一个用于 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在一个名为3rdthat的子目录中,它是test.ts.

测试.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' {
...
}

生成与上面相同。

于 2012-10-25T18:40:43.803 回答
0

您通常可以通过 dojo 加载程序加载模块,您不必使用 import 语句。但是如果你想你必须声明模块:

declare module "dojo/_base/lang" {
  export function ...
  export class ...
}
于 2012-10-25T17:01:20.363 回答