Это мой tsconfig.json
файл:
{
"compilerOptions": {
"lib": ["es2017"],
"module": "commonjs",
"noImplicitReturns": true,
"outDir": "lib",
"sourceMap": true,
"target": "es6"
},
"compileOnSave": true,
"include": [
"src"
],
"exclude": [
"node_modules"
]
}
Структура каталогов:
.
├── lib
├── src
│ └── module.ts
├── tests
│ └── module.spec.ts
└── tsconfig.json
Я могу написать асинхронный / ожидающий код в src
каталоге, но когда я пытаюсьчтобы использовать синтаксис async / await в модульном тесте, тогда моя IDE (PhpStorm или любой продукт JetBrains) жалуется, что:
TS2705: асинхронная функция или метод в ES5 / ES3 требует конструктора Promise.Убедитесь, что у вас есть декларация из конструктора 'Promise' или вы включили 'es2015' в свои опции --lib
.
IMO thisуведомление не имеет смысла, потому что у меня "lib": ["es2017"]
в моем tsconfig.json
.Но даже если я заменю его на "lib": ["es2015"]
(что, я знаю, не имеет смысла), ошибка останется прежней.
Вероятно, это не настоящая ошибка, потому что код компилируется правильно, и я могузапустите тест.
Это просто ошибка в IDE или я что-то не так делаю?
Обновление
Я только что обнаружил, что проблемане относится только к async / await.Есть похожая проблема с Обещаниями.Когда я использую конструктор Promise
или Promise.all()
, я получаю следующую ошибку:
TS2693: «Обещание» относится только к типу, но здесь используется в качестве значения.