dostęp w module klasy światowej / nazw: maszynopis

głosy
4

Mam następującą sytuację:

module MyModule {
    export class Image {
        ...
    }

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

Jednakże chcę, aby utworzyć wystąpienie HTMLImageElement, nie MyModule.Image. Jak mogę określić, że chcę instancję klasy, która rezyduje w globalnej przestrzeni nazw modułu /?

Dziękuję Ci!

Utwórz 08/10/2012 o 10:39
źródło użytkownik
W innych językach...                            


1 odpowiedzi

głosy
2

Istnieje wiele sposobów, ale ja polecam korzystania document.createElementw jakikolwiek sposób. Na przykład:

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

Można tworzyć funkcje convenience lub klas, które owinąć to dla ciebie.

Jednym z innych sposobów byłoby na przykład, aby utworzyć odwołanie do oryginalnej klasy obraz przed definicji klasy:

var ImageElement = Image;

...

export class Image {
    ...
}

var image = new ImageElement()

jednak nie będą uznawane jako HTMLImageElementprzykład, to znaczy bez odpowiedniego uzupełniania kodu.

edit : oto moja niepracująca próba zwiększenia się Windowinterfejs, jak wspomniano w komentarzach:

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

Kompiluje poprawnie (czyli bez błędów), ale w Visual Studio to oznaczane jako błąd, mówiąc Duplicate Identifier 'Image', i próbuje utworzyć instancję poprzez new window.Image()są oznaczone mówiąc new expressions only valid on constructors. Co ciekawe to działa dobrze na innych interfejsów, jak już wspomniano, kompiluje poprawnie.

Odpowiedział 08/10/2012 o 14:50
źródło użytkownik

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