如何使 Typescript Dojo Widget 可更新?
How to make Typescript Dojo Widget Newable?
在现有的 Dojo 小部件中,我想创建一些其他小部件的实例,该实例已从 TypeScript 转译而来。听起来很简单——但出于某种原因,转译的小部件不是 "newable",除非我指定类名两次。我无法更新所有现有代码,因此我需要转译的小部件 "newable".
下面是非常简单的MyTypeScriptWidget.ts:
import _WidgetBase = require("dijit/_WidgetBase");
export class MyTypeScriptWidget extends dijit._WidgetBase
{
constructor(params?: Object, srcNodeRef?: HTMLElement)
{
super(params, srcNodeRef);
}
}
然后,在现有的 Dojo JavaScript(不是 TypeScript)小部件中,我想新建一个 MyTypeScriptWidget 实例。所以,这就是我在 MyJavaScriptWidget.js
中必须做的事情
var myInstance = new MyTypeScriptWidget.MyTypeScriptWidget();
注意到我必须输入两次吗?为什么?我究竟做错了什么?我如何更改 MyTypeScriptWidget.ts 以便 MyJavaScriptWidget.ts 可以像我以前那样使用 AMD 创建一个实例,就像这样:
define(['dijit/_WidgetBase', 'tool/MyTypeScriptWidget'], function(_WidgetBase, MyTypeScriptWidget) {
return declare([_WidgetBase], {
var myInstance = new MyTypeScriptWidget();
});
});
在 TypeScript 中,export
通常在模块的导出对象上定义成员。如果要定义单个东西导出,需要使用export =
.
class MyTypeScriptWidget ... {
...
}
export = MyTypeScriptWidget;
在现有的 Dojo 小部件中,我想创建一些其他小部件的实例,该实例已从 TypeScript 转译而来。听起来很简单——但出于某种原因,转译的小部件不是 "newable",除非我指定类名两次。我无法更新所有现有代码,因此我需要转译的小部件 "newable".
下面是非常简单的MyTypeScriptWidget.ts:
import _WidgetBase = require("dijit/_WidgetBase");
export class MyTypeScriptWidget extends dijit._WidgetBase
{
constructor(params?: Object, srcNodeRef?: HTMLElement)
{
super(params, srcNodeRef);
}
}
然后,在现有的 Dojo JavaScript(不是 TypeScript)小部件中,我想新建一个 MyTypeScriptWidget 实例。所以,这就是我在 MyJavaScriptWidget.js
中必须做的事情var myInstance = new MyTypeScriptWidget.MyTypeScriptWidget();
注意到我必须输入两次吗?为什么?我究竟做错了什么?我如何更改 MyTypeScriptWidget.ts 以便 MyJavaScriptWidget.ts 可以像我以前那样使用 AMD 创建一个实例,就像这样:
define(['dijit/_WidgetBase', 'tool/MyTypeScriptWidget'], function(_WidgetBase, MyTypeScriptWidget) {
return declare([_WidgetBase], {
var myInstance = new MyTypeScriptWidget();
});
});
在 TypeScript 中,export
通常在模块的导出对象上定义成员。如果要定义单个东西导出,需要使用export =
.
class MyTypeScriptWidget ... {
...
}
export = MyTypeScriptWidget;