Tapuscrit: classe d'accès dans le module / espace de noms global

voix
4

J'ai la situation suivante:

module MyModule {
    export class Image {
        ...
    }

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

Cependant, je veux créer une instance de HTMLImageElement, non MyModule.Image. Comment puis-je préciser que je veux instancier une classe qui réside dans le module global / espace de nom?

Je vous remercie!

Créé 08/10/2012 à 10:39
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
2

Il y a plusieurs façons, mais je vous recommande d' utiliser document.createElementde quelque façon. Par exemple:

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

Vous pouvez créer des fonctions de proximité ou des classes qui enveloppent pour vous.

L'un des autres moyens serait par exemple pour créer une référence à la classe d'image d'origine avant votre définition de la classe:

var ImageElement = Image;

...

export class Image {
    ...
}

var image = new ImageElement()

mais il ne sera pas reconnu comme HTMLImageElementexemple, c. -à- pas la complétion de code approprié.

modifier : voici ma non-travail tentative d'augmenter l' Windowinterface comme mentionné dans les commentaires:

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

Il compile correctement (sans erreurs), mais dans Visual Studio , il est signalé comme une erreur, en disant Duplicate Identifier 'Image', et tente de créer une instance via new window.Image()disent battant pavillon new expressions only valid on constructors. Fait intéressant , il fonctionne très bien sur d' autres interfaces, et comme déjà mentionné, il compile correctement.

Créé 08/10/2012 à 14:50
source utilisateur

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