Объявить тип PromiseConstructorLike, новый Promise в TypeScript

Я редактирую файлы TypeScript, и Promise не найден компилятором TypeScript или в коде Visual Studio. Вместо PromiseConstructorLike, PromiseLike<T> находятся как показано в lib.d.ts или lib.es6.d.ts ниже.

declare type PromiseConstructorLike = new <T>(executor: (resolve: (value?: T | PromiseLike<T>) => void, reject: (reason?: any) => void)
=> void) => PromiseLike<T>;

interface PromiseLike<T> {
    /**
    * Attaches callbacks for the resolution and/or rejection of the Promise.
    * @param onfulfilled The callback to execute when the Promise is resolved.
    * @param onrejected The callback to execute when the Promise is rejected.
    * @returns A Promise for the completion of which ever callback is executed.
    */
    then<TResult>(onfulfilled?: (value: T) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): PromiseLike<TResult>;
    then<TResult>(onfulfilled?: (value: T) => TResult | PromiseLike<TResult>,

Я попытался разместить следующее в моем файле TypeScript

var Promise : PromiseConstructorLike;
...

new Promise(function (resolve, reject) {
    ...
    return value;

}).then(value => {
    ...
});

который компилируется, однако я получаю ошибку во время выполнения

TypeError: Promise is not a constructor

Какой правильный синтаксис или код для выполнения new Promise( как показано выше?

3 ответа

Решение
declare var Promise : PromiseConstructorLike;

Поскольку кодек скомпилирован, это не похоже на проблему с объявлениями типов. Вы должны сделать свой Promise доступным во время выполнения JS. Это может быть достигнуто с помощью обещания polyfill.

С одной дополнительной линией

declare var Promise : PromiseConstructorLike;

Вы можете использовать Обещания в Typescript следующим образом:

let myPromise= new Promise((resolve,reject) =>{...});
Другие вопросы по тегам