clasa de acces la nivel mondial modul / spațiu de nume: masina de scris

voturi
4

Am următoarea situație:

module MyModule {
    export class Image {
        ...
    }

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

Cu toate acestea, doresc să creez o instanță de HTMLImageElement, nu MyModule.Image. Cum pot specifica că vreau să instantia o clasă care se află în modul globală / spațiul de nume?

Mulțumesc!

Întrebat 08/10/2012 la 10:39
sursa de către utilizator
În alte limbi...                            


1 răspunsuri

voturi
2

Există mai multe moduri, dar i - ar recomanda utilizarea document.createElementîn orice mod. De exemplu:

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

Ai putea crea funcții comoditate sau clase care înfășoară acest lucru pentru tine.

Una dintre celelalte metode ar fi, de exemplu, pentru a crea o referință la clasa imaginii originale înainte de definiția dumneavoastră de clasă:

var ImageElement = Image;

...

export class Image {
    ...
}

var image = new ImageElement()

Cu toate acestea, nu va fi recunoscut ca HTMLImageElementexemplu, adică fără finalizare cod corespunzător.

edita : aici e meu nelucratoare încercare de a mări Windowinterfața după cum se menționează în comentariile:

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

Se compilează în mod corect (adică fără erori), dar în Visual Studio este semnalizat ca o eroare, spunând Duplicate Identifier 'Image', și încearcă să creeze o instanță prin intermediul new window.Image()sunt marcate spunând new expressions only valid on constructors. Interesant este că funcționează bine pe alte interfețe, și după cum sa menționat deja, compileaza corect.

Publicat 08/10/2012 la 14:50
sursa de către utilizator

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