如何使Typescript Dojo Widget成为可能?

时间:2015-02-27 17:21:14

标签: javascript dojo typescript

在现有的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();
  });

});

1 个答案:

答案 0 :(得分:0)

在TypeScript中,export通常定义模块导出对象上的成员。如果要定义要导出的单个内容,则需要使用export =

class MyTypeScriptWidget ... {
    ...
}

export = MyTypeScriptWidget;