在现有的Dojo小部件中,我想创建一个其他小部件的实例,该小部件已从TypeScript转换而来。听起来很简单 - 但由于某些原因,转换后的小部件不是“新的”,除非我指定两次类名。我无法更新所有现有代码,因此我需要将已编译的小部件设置为“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();
});
});
答案 0 :(得分:0)
在TypeScript中,export
通常定义模块导出对象上的成员。如果要定义要导出的单个内容,则需要使用export =
。
class MyTypeScriptWidget ... {
...
}
export = MyTypeScriptWidget;