Подтвердить что ты не робот

Ts. Функция или метод async в ES5/ES3 требует конструктора "Promise"

Здравствуйте, я использую async/await в моем проекте TypeScript, но я получаю этот журнал:

[ts] Асинхронная функция или метод в ES5/ES3 требует конструктора "Promise". Убедитесь, что у вас есть объявление для конструктора "Promise" или укажите "ES2015" в вашей опции --lib.

Как я могу это решить?

4b9b3361

Ответ 1

Как говорится в сообщении об ошибке, добавьте lib: es2015 в ваш файл tsconfig.json

// tsconfig.json
{
  "compilerOptions": {
    "lib": [ "es2015" ]
  }
}

ОБНОВЛЕНИЕ: если это не работает для вас, попробуйте следующее:

JetBrains IDE, такой как WebStorm, использует собственную реализацию по умолчанию. Убедитесь, что вы настроили его на использование языковой службы TypeScript.

Для Visual Studio файлы проекта и tsconfig.json являются взаимоисключающими. Вам нужно будет настроить свой проект напрямую.

https://github.com/Microsoft/TypeScript/issues/3983#issuecomment-123861491

Ответ 2

Попробуйте этот пакет, содержащий определения типов для es6-prom

npm install --save @types/es6-promise

Ответ 3

Если вы используете VS, удалите файл tsconfig.json и щелкните правой кнопкой мыши проект в обозревателе решений, а затем нажмите Properties-> Сборка TypeScript в общих чертах и измените следующее

  • Версия ECMAScript: ECMAScript 6

  • Модульная система: ES2015

Ответ 4

Вы также можете использовать "lib": "es2015.promise" для этой конкретной ошибки

Ответ 5

VS2019, похоже, не распознает файл tsconfig.json, поэтому параметры LIB не изменят приложение. Это способ добавить PROMISE для машинописного текста для принятия ASYNC AWAIT.

export function AD(first: any, second: any, callBack: any)
{
    const rtn = async (dispatch: any): Promise<void> =>
    {
        await axios.post(TYPE.URI, { // provide a string of a URI to post into
            parm1: first,
            parm2: second
        })
            .then(data => // or you can use response instead of data as a name
            {
                console.log("data from call next");
                console.log(data);
                dispatch({ type: TYPES.AD, payload: data.data });
                if (callBack)
                {
                    callBack(data);
                }
            })
    }
    return rtn;

}

Ответ 6

Я использую VS2017 v15.8.2 и Typescript 2.4.2 в проекте Angular 4 (в рамках проекта библиотеки классов в моем решении, а не проекта машинописи). Мне удалось удалить ошибку/предупреждение в VS, отключив языковую службу JavaScript:

Параметры => Текстовый редактор => JavaScript/TypeScript => Языковая служба

Перезагрузите VS.

Надеюсь это поможет.