Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TypeScript:全局模块/命名空间中的访问类_Typescript - Fatal编程技术网

TypeScript:全局模块/命名空间中的访问类

TypeScript:全局模块/命名空间中的访问类,typescript,Typescript,我有以下情况: module MyModule { export class Image { ... } var image = Image(); // returns an instance of MyModule.Image } 但是,我想创建HTMLImageElement的实例,而不是MyModule.Image。如何指定要实例化驻留在全局模块/命名空间中的类 谢谢大家! 有很多方法,但我建议以任何方式使用document.createElem

我有以下情况:

module MyModule {
    export class Image {
        ...
    }

    var image = Image(); // returns an instance of MyModule.Image
}
但是,我想创建HTMLImageElement的实例,而不是MyModule.Image。如何指定要实例化驻留在全局模块/命名空间中的类


谢谢大家!

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

var image = <HTMLImageElement>document.createElement('img');
但是,它不会被识别为
HTMLImageElement
实例,即没有适当的代码完成

编辑:下面是我在非工作状态下尝试扩充
窗口
界面,如评论中所述:

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

它可以正确编译(即没有错误),但在Visual Studio中,它被标记为错误,表示
重复标识符“Image”
,并尝试通过
新窗口创建实例。Image()
被标记为
新表达式仅在构造函数上有效。有趣的是,它可以在其他接口上正常工作,正如前面提到的,它可以正确编译。

谢谢!虽然这在我的特殊情况下有帮助,但如果有一个操作符来处理全局名称空间,它会很有用,不是吗?是的,它会。能够访问
窗口。图像
也可以,但是
窗口
界面上没有定义
图像
,我自己也无法在那里定义,不确定这是否可行。
interface Window {
    Image: new(width?: number, height?: number) => HTMLImageElement;
}