web-dev-qa-db-fra.com

La propriété 'finally' n'existe pas sur le type 'Promise <void>'

J'essaie d'utiliser la méthode finally sur une promesse, mais je continue à avoir cette erreur.

Property 'finally' does not exist on type 'Promise<void>'.

J'ai consulté des questions similaires à celles-ci qui ont suggéré d'ajouter "es2018.promise" au tableau "lib" dans tsconfig.js. Cela produit alors l'erreur suivante:

TypeScript error
        Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'esnext', 'dom',
        'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator',
        'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol',
        'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory', 'es2017.string',
        'es2017.intl', 'esnext.asynciterable'.

Toute aide pour résoudre ceci est grandement appréciée!

7
JJ Pell

La prise en charge ES2018 n'a pas été ajoutée jusqu'à/ TypeScript 2.7 . La mise à niveau vers cette version ou ultérieure corrige cette erreur.

5
JBC

Bien que TypeScript 2.7 puisse le prendre en charge, vous devez cibler: "ESNEXT" dans votre tsconfig.json.

Ce qui signifie que votre code ne fonctionnera probablement pas dans les navigateurs plus anciens ou dans les versions de node.js. 

J'utilise: "@ Types/promise.prototype.finally": "^ 2.0.2", Import {shim comme finallyShim} de 'promise.prototype.finally'; enfinShim ();

3
rod howard

J'ai résolu ce problème en utilisant ceci https://www.npmjs.com/package/promise.prototype.finally car il semble que ce soit un problème avec ionic pas TypeScript. J'imagine que cela sera corrigé dans un proche avenir.

Merci à tous ceux qui m'ont aidé avec ça.

0
JJ Pell

Pour TypeScript 3.3.3, ajoutez simplement es2018.promise à votre config tsconfig.json - compilerOptions.lib comme ceci:

"lib": ["es2015", "es2016", "dom", "es2018.promise"]

Si vous utilisez vscode, vous devriez peut-être reload window après avoir ajouté cette option à votre fichier tsconfig.json

0
slideshowp2