Dojo Typescript能否使用现有的AMD';s
Dojo1.8已经定义了AMD模块。例如,您可以执行以下操作:Dojo Typescript能否使用现有的AMD';s,dojo,typescript,js-amd,Dojo,Typescript,Js Amd,Dojo1.8已经定义了AMD模块。例如,您可以执行以下操作: require(["dojo/_base/lang"], function (lang) { var ab = lang.mixin({a: 1}, {b: 2}); }); 但是,如何避免在尝试导入此模块时出错 import lang = module ("dojo/_base/lang"); 是否可能?您通常可以通过dojo加载程序加载模块,而不必使用import语句。但是,如果需要,您必须声明模块: declare m
require(["dojo/_base/lang"], function (lang) {
var ab = lang.mixin({a: 1}, {b: 2});
});
但是,如何避免在尝试导入此模块时出错
import lang = module ("dojo/_base/lang");
是否可能?您通常可以通过dojo加载程序加载模块,而不必使用import语句。但是,如果需要,您必须声明模块:
declare module "dojo/_base/lang" {
export function ...
export class ...
}
您需要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:
生成与上面相同的内容。我知道我可以用与问题中相同的方式加载模块,但如何从typescript加载模块,使其出现在生成的js的外部需求中?这是可行的……但如果是具有构造函数的dojo/store/Memory呢?无法导出构造函数,因此它需要包含在类定义中(我猜)。然后import Memory=module(“dojo/store/Memory”)需要Memory.Memory()而不是Memory()。你能充实一个Memory.d.ts来包含构造函数吗?注意:你可以使用一个无名函数导出一个构造函数。
///<reference path="3rd/lang.d.ts"/>
import lang = module('dojo/_base/lang');
var ab = lang.mixin({a: 1}, {b: 2});
declare module 'dojo/_base/lang' {
...
}