Typescript: toegang klasse in de wereldwijde module / namespace

stemmen
4

Ik heb de volgende situatie werd:

module MyModule {
    export class Image {
        ...
    }

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

Maar ik wil een exemplaar van HTMLImageElement, niet MyModule.Image creëren. Hoe geef ik dat ik wil een klasse die zich bevindt in de globale module / namespace instantiëren?

Dank je!

De vraag is gesteld op 08/10/2012 om 10:39
bron van user
In andere talen...                            


1 antwoorden

stemmen
2

Er zijn vele manieren, maar ik raad je aan om document.createElementop welke manier. Bijvoorbeeld:

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

Je kon het gemak functies of klassen die dit voor u wrap te creëren.

Een van de andere manieren zou zijn om bijvoorbeeld een verwijzing naar de oorspronkelijke afbeelding klasse te maken voordat je klas definitie:

var ImageElement = Image;

...

export class Image {
    ...
}

var image = new ImageElement()

het zal echter niet worden herkend als HTMLImageElementbijvoorbeeld dus geen passende code completion.

bewerking : hier is mijn niet-werkende poging om het vergroten Window-interface zoals vermeld in de opmerkingen:

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

Het compileert correct (dus zonder fouten), maar in Visual Studio het is gemarkeerd als een fout, zeggen Duplicate Identifier 'Image', en pogingen om een instantie te maken via new window.Image()zijn gemarkeerd zeggen new expressions only valid on constructors. Interessant is dat het werkt prima op andere interfaces, en zoals reeds vermeld, het correct compileert.

antwoordde op 08/10/2012 om 14:50
bron van user

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