我使用VS2017和TypeScript 2.5.3。
.ts代码如下所示:
class LossEnergyCalculation {
async initLossEnergyCalculation(): Promise<void> {
try {
const response = await fetch("/LossEnergyCalculation/GetOilFieldList");
const oilFieldsData = await response.json();
}
...
}
在TypeScript Build部分的项目属性中,我设置了:
TypeScript version: 2.5
ECMAScript version: ECMAScript 5
JSX compilation in TSX files: None
Module System: CommonJS
我没有tsconfig.json文件。
当我构建项目时,会出现以下错误:
Build:An async function or method in ES5/ES3 requires the 'Promise' constructor. Make sure you have a declaration for the 'Promise' constructor or include 'ES2015' in your `--lib` option.
如何摆脱错误?
答案 0 :(得分:3)
您必须指定lib
选项才能包含Promise
声明。在运行时,如果运行时没有对它们的内置支持,您还需要一个用于promises的库。
要指定库,您需要一个tsconfig.json。根据您在问题中指定的内容。这应该等同于您当前的配置
{
"compilerOptions": {
"module": "commonjs",
"sourceMap": true,
"target": "es5",
"lib": [ "es2015.promise", "es5", "dom" ]
}
}
注意我只包含es2015.promise
的{{1}}和es2015
的剩余运行时声明。这可以确保您不会获得es5
您不应该使用的功能,并且您只能获得所需的承诺。另外,仅因为包含es2015
lib并不意味着运行时将具有承诺,应该单独处理。