ecmascript 6 - Cum folosesc Promises cu TypeScript atunci când țintesc es5?
Promise.all<any, any>(ajaxRequests).then(()=> {
console.log("done");
});
Codul de mai sus generează următoarea eroare de compilator:
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.
Nu sunt familiarizat cu ce este această opțiune lib a compilatorului și ce implicații ar avea dacă aș schimba-o.
Încerc să vizez browsere mai vechi și trebuie să susțin es5, cred. Presupun că acest lucru se poate realiza prin transpiling/polyfilling? Configurația mea de TypeScript este:
{
"compilerOptions": {
"sourceMap": true,
"target": "es5",
"declaration": true,
"removeComments": false,
"module" : "commonjs",
"moduleResolution": "node",
"resolveJsonModule": true,
},
"include": [
"src/*"
],
"exclude": [
"node_modules",
"**/*.spec.ts"
]
}
Răspuns #1
Adaugă următoarele la opțiunile compilatorului tău:
"lib": [
"dom",
"es5",
"es2015.promise"
]
Opțiunile lib sunt descrise mai detaliat aici.
Iată o explicație a diferenței dintre target și lib.
Asta fiind spus, dacă utilizarea es6 este acceptabilă pentru tine, atunci cred că poți doar să setezi target la "es6" în loc să te complici cu lib.
