如何使Typescript Dojo Widget可新建

How to make Typescript Dojo Widget Newable?

本文关键字:新建 Widget Dojo 何使 Typescript      更新时间:2024-07-02

在一个现有的Dojo小部件中,我想创建一个其他小部件的实例,该小部件已从TypeScript转换而来。听起来很简单,但由于某种原因,除非我指定两次类名,否则transpiled小部件是不"可更新"的。我无法更新所有现有的代码,所以我需要经过转换的小部件是"可更新的"。

下面是非常简单的MyTypeScriptWidget.ts

import _WidgetBase = require("dijit/_WidgetBase");
export class MyTypeScriptWidget extends dijit._WidgetBase 
{
  constructor(params?: Object, srcNodeRef?: HTMLElement) 
  {
    super(params, srcNodeRef);
  }
}

然后,在现有的DojoJavaScript(而不是TypeScript)小部件中,我想新建MyTypeScriptWidget的一个实例。因此,以下是我在MyJavaScriptWidget.js中必须做的操作

var myInstance = new MyTypeScriptWidget.MyTypeScriptWidget();

注意到我必须打两次吗?为什么?我做错了什么?如何更改MyTypeScriptWidget.ts,以便MySJavaScriptWidget_ts

define(['dijit/_WidgetBase', 'tool/MyTypeScriptWidget'], function(_WidgetBase, MyTypeScriptWidget) {
  return declare([_WidgetBase], {
    var myInstance = new MyTypeScriptWidget();
  });
});

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

class MyTypeScriptWidget ... {
    ...
}
export = MyTypeScriptWidget;