TypeScript - 来自全局范围的新Image()

时间:2014-08-08 12:47:27

标签: javascript typescript

我有一个类MYMODULE.Image {},但我想实例化一个HTMLImageElement类型的对象。当我调用new Image()时,TypeScript认为我想实例化MYMODULE.Image,即使我使用

image: HTMLImageElement = new Image();

我可以以某种方式显式调用全局Image类吗?我试过了

image: HTMLImageElement = new Window.Image();但无济于事。

像C ++ ::Image这样的范围解析运算符会很方便。也许它在那里,我只是没有看到它。

谢谢

2 个答案:

答案 0 :(得分:2)

创建HTMLImage元素可以这样做。

document.createElement("img");

根据Mozilla文档,它是相同的:https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.Image

编辑:

如果你想使用Image构造函数,你可能需要创建一个如下所示的新界面:

interface Window {
    Image: {   
        prototype: HTMLImageElement;
        new (): HTMLImageElement;
    };
}
var a = new window.Image()

答案 1 :(得分:0)

您可以巧妙地使用typeof

来实现这一目标
declare var imageType:typeof Image; // Create a alias so you can refer to the type 
interface Window{
    // Use the `typeof alias` because `Image` would be confused in the context
    Image: typeof imageType; 
}

完整样本:

declare var imageType:typeof Image;
interface Window{
    Image: typeof imageType;
}

module Foo{
    class Image{}

    var image: HTMLImageElement = new window.Image();
}