Loggfila: tilgang klasse i global modul / navne

stemmer
4

Jeg har følgende situasjon:

module MyModule {
    export class Image {
        ...
    }

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

Men jeg ønsker å opprette en forekomst av HTMLImageElement, ikke MyModule.Image. Hvordan angir jeg at jeg vil på å bruke en klasse som ligger i den globale modulen / navne?

Takk skal du ha!

Publisert på 08/10/2012 klokken 09:39
kilden bruker
På andre språk...                            


1 svar

stemmer
2

Det er mange måter, men jeg vil anbefale å bruke document.createElementpå den måten. For eksempel:

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

Du kan skape praktiske funksjoner eller klasser som brytes dette for deg.

En av de andre måtene ville være for eksempel å opprette en referanse til den opprinnelige bilde klassen før klassen din definisjon:

var ImageElement = Image;

...

export class Image {
    ...
}

var image = new ImageElement()

men det vil ikke bli anerkjent som HTMLImageElementeksempel, dvs. ingen riktige koden ferdigstillelse.

Edit : her er min ikke-arbeidende forsøk på å forsterke Windowgrensesnitt som nevnt i kommentarfeltet:

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

Det kompilerer riktig (dvs. uten feil), men i Visual Studio er det flagget som en feil, sier Duplicate Identifier 'Image', og forsøk på å opprette en forekomst via new window.Image()flagges sier new expressions only valid on constructors. Interessant det fungerer fint på andre grensesnitt, og som allerede nevnt, det kompilerer riktig.

Svarte 08/10/2012 kl. 13:50
kilden bruker

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