4

我有以下情况:

module MyModule {
    export class Image {
        ...
    }

    var image = Image(); // returns an instance of MyModule.Image
}

但是,我想创建一个 HTMLImageElement 实例,而不是 MyModule.Image。如何指定要实例化驻留在全局模块/命名空间中的类?

谢谢!

4

1 回答 1

2

有很多方法,但我建议document.createElement以任何方式使用。例如:

var image = <HTMLImageElement>document.createElement('img');

您可以创建方便的函数或为您包装它的类。

例如,其他方法之一是在类定义之前创建对原始 Image 类的引用:

var ImageElement = Image;

...

export class Image {
    ...
}

var image = new ImageElement()

但是它不会被识别为HTMLImageElement实例,即没有适当的代码完成。

编辑:这是我在评论中提到的增强界面的非工作尝试:Window

interface Window {
    Image: new(width?: number, height?: number) => HTMLImageElement;
}

它编译正确(即没有错误),但在 Visual Studio 中它被标记为错误,saying Duplicate Identifier 'Image',并且尝试通过创建实例new window.Image()被标记为saying new expressions only valid on constructors。有趣的是,它在其他接口上运行良好,并且如前所述,它可以正确编译。

于 2012-10-08T13:50:16.787 回答