clase de acceso en el módulo / espacio de nombres global: mecanografiado

votos
4

Tengo la siguiente situación:

module MyModule {
    export class Image {
        ...
    }

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

Sin embargo, quiero crear una instancia de HTMLImageElement, no MyModule.Image. ¿Cómo se especifica que quiero crear una instancia de una clase que reside en el módulo de E / espacio de nombres global?

¡Gracias!

Publicado el 08/10/2012 a las 10:39
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
2

Hay muchas maneras, pero yo recomendaría usar document.createElementde cualquier manera. Por ejemplo:

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

Se puede crear funciones de confort o clases que envuelven esto para usted.

Una de las otras formas sería, por ejemplo, para crear una referencia a la clase de imagen original antes de su definición de clase:

var ImageElement = Image;

...

export class Image {
    ...
}

var image = new ImageElement()

sin embargo, no será reconocido como HTMLImageElementejemplo, es decir, sin la terminación del código apropiado.

edit : aquí está mi no trabaja intento de aumentar el Windowinterfaz como se ha mencionado en los comentarios:

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

Se compila correctamente (es decir, sin errores), pero en Visual Studio que está marcado como un error, diciendo Duplicate Identifier 'Image', e intenta crear una instancia mediante new window.Image()aparecen marcados diciendo new expressions only valid on constructors. Es interesante que funciona muy bien en otras interfaces, y como ya se ha mencionado, se compila correctamente.

Respondida el 08/10/2012 a las 14:50
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more