如何使 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;