classe di accesso nel modulo globale / namespace: dattiloscritto

voti
4

Ho la seguente situazione:

module MyModule {
    export class Image {
        ...
    }

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

Tuttavia, voglio creare un'istanza di HTMLImageElement, non MyModule.Image. Come faccio a specificare che voglio creare un'istanza di una classe che risiede nel modulo / namespace globale?

Grazie!

È pubblicato 08/10/2012 alle 10:39
fonte dall'utente
In altre lingue...                            


1 risposte

voti
2

Ci sono molti modi, ma mi consiglia di utilizzare document.createElementin qualsiasi modo. Per esempio:

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

È possibile creare funzioni di convenienza o classi che avvolgono questo per voi.

Uno degli altri modi sarebbe per esempio per creare un riferimento alla classe immagine originale prima della definizione di classe:

var ImageElement = Image;

...

export class Image {
    ...
}

var image = new ImageElement()

tuttavia non sarà riconosciuto come HTMLImageElementesempio, cioè non completamento del codice appropriato.

Edit : ecco la mia non-lavoro tentativo di aumentare l' Windowinterfaccia come accennato nei commenti:

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

Compila correttamente (cioè senza errori), ma in Visual Studio è contrassegnato come un errore, dicendo Duplicate Identifier 'Image', e tenta di creare un'istanza via new window.Image()vengono contrassegnati dicendo new expressions only valid on constructors. È interessante notare che funziona bene su altre interfacce, e come già accennato, si compila correttamente.

Risposto il 08/10/2012 a 14:50
fonte dall'utente

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