Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dojo Typescript能否使用现有的AMD';s_Dojo_Typescript_Js Amd - Fatal编程技术网

Dojo Typescript能否使用现有的AMD';s

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

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