класс доступа в глобальном модуле / имен: машинопись

голоса
4

У меня есть следующая ситуация:

module MyModule {
    export class Image {
        ...
    }

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

Тем не менее, я хочу, чтобы создать экземпляр HTMLImageElement, не MyModule.Image. Как определить, что я хочу, чтобы создать экземпляр класса, который находится в глобальном модуле / имен?

Спасибо!

Задан 08/10/2012 в 10:39
источник пользователем
На других языках...                            


1 ответов

голоса
2

Есть много способов, но я бы рекомендовал использовать document.createElementлюбой способ. Например:

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

Вы можете создать удобные функции или классы, которые окутывают это для вас.

Один из других способов было бы, например, чтобы создать ссылку на исходный класс изображений до вашего определения класса:

var ImageElement = Image;

...

export class Image {
    ...
}

var image = new ImageElement()

однако он не будет признан в качестве HTMLImageElementинстанции, т.е. не соответствующего завершения кода.

редактировать : вот моя нерабочим попытка увеличить в Windowинтерфейс , как упоминалось в комментариях:

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

Это правильно компилирует (без ошибок), но в Visual Studio это помечено как ошибка, говоря Duplicate Identifier 'Image', и пытается создать экземпляр с помощью new window.Image()помечается говорит new expressions only valid on constructors. Интересно , что прекрасно работает на других интерфейсов, и , как уже упоминалось, это правильно компилирует.

Ответил 08/10/2012 в 14:50
источник пользователем

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