Как использовать Promises с TypeScript при нацеливании на es5? - PullRequest
0 голосов
/ 05 апреля 2019
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 Ответ

2 голосов
/ 05 апреля 2019

Добавьте следующие параметры к компилятору:

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

Параметры lib описаны более подробно здесь .

Вот объяснение разницы между target и lib.

При этом, если использование es6 приемлемо для вас, тогда я думаю, что вы можете просто установить target в "es6" вместовозиться с lib.

...