定位es5时如何将Promises与TypeScript一起使用?

时间:2019-04-05 14:11:21

标签: typescript ecmascript-6 promise es5-compatiblity

Promise.all<any, any>(ajaxRequests).then(()=> {
    console.log("done");
});

上面的代码给出了以下编译器错误:

TS2585: 'Promise' only refers to a type, but is being used as a value here. Do you need to change your target library? Try changing the `lib` compiler option to es2015 or later.

我不熟悉此编译器lib选项的含义,以及如果我要对其进行更改的含义。


我正在尝试针对较旧的浏览器,并且需要支持es5。我认为这可以通过转储/填充来完成?我的打字稿配置是:

{
    "compilerOptions": {
        "sourceMap": true,
        "target": "es5",
        "declaration": true,
        "removeComments": false,
        "module" : "commonjs",
        "moduleResolution": "node",
        "resolveJsonModule": true,
    },
    "include": [
        "src/*"
    ],

    "exclude": [
        "node_modules",
        "**/*.spec.ts"
    ]
}

1 个答案:

答案 0 :(得分:2)

在编译器选项中添加以下内容:

"lib": [
        "dom",
        "es5",
        "es2015.promise"
    ]

here更详细地介绍了lib选项。

Here'stargetlib之间的区别的解释。

话虽如此,如果您可以接受使用es6,那么我认为您可以将target设置为"es6"而不用弄乱lib