3
背景
目前在我工作的地方,我们用dojo.requires导入所有我们需要的类,我们每一类使用。然而,在道场2.0它们摆脱dojo.require的和去AMD需要风格(http://livedocs.dojotoolkit.org/releasenotes/migration-2.0):进口模块,类(道场)
require(["dijit/form/Button", "dojox/layout/ContentPane", ...],
function(Button, ContentPane, ...){
// CODE HERE
});
目前,我们已经把我们的道场/ dijit的类,比如在自己的.d.ts以下定义文件:
module dijit.form{
export class Button extends dijit.form._FormWidget {
showLabel : bool;
_onClick (e:any) : any;
_onButtonClick (e:any) : any;
_setShowLabelAttr (val:any) : any;
_clicked (e:any) : any;
setLabel (content:String) : any;
_setLabelAttr (content:String) : any;
_setIconClassAttr (val:String) : any;
}
}
这使我们能够延长像下面这些类:
class CustomButton extends dijit.form.Button {}
问题
我们希望能够有打字稿产生了Dojo 2.0(AMD)的风格要求,并做类似如下:
import Button = module("dijit/form/Button")
class CustomButton extends Button {}
我们曾希望将汇编成类似以下内容:
define(["require", "exports", "dijit/form/Button"], function(require, exports, Button)
{
///....Generated class
})
但是,这不起作用,因为导入只适用于模块而不适用于类。我们得到如下错误:
The name '"dijit/form/Button"' does not exist in the current scope
A module cannot be aliased to a non-module type
我们也试图定义喜欢的dijit类:
declare module "dijit/form" {
export class Button....
}
有没有一种方法,我们可以实现我们正在尝试做的?
感谢
感谢您的回应,我们可以像这样工作,但问题是dojo的模块是类。使用你的例子,typescript会产生像define([“require”,“exports”,“dijit/form”],''这样的定义,但我们需要它像'define([“require”,“出口“,”dijit/form/Button“] ...' – stopyoukid
另一种方法是声明var define:any;并且包含define声明,你可以包含更完整的声明。 – Fenton