I am trying to use the finally method on a promise but I keep getting this error.
Property 'finally' does not exist on type 'Promise<void>'.
I have looked up similar questions to this which have suggested adding "es2018.promise" to the "lib" array in tsconfig.js. This then produces the following error:
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'.
Any help resolving this is greatly appreciated!
I fixed this by using this https://www.npmjs.com/package/promise.prototype.finally as it seems to be an issue with ionic not typescript. I imagine it will be fixed in the near future.
Thanks to everyone who helped me with this.
ES2018 support was not added until TypeScript 2.7. Upgrading to that version or later resolves this error.
While TypeScript 2.7 might support it you need to target: "ESNEXT" in your tsconfig.json.
Which means that your code will probably not run in older browsers or node.js versions.
I'm using: "@types/promise.prototype.finally": "^2.0.2", import { shim as finallyShim } from 'promise.prototype.finally'; finallyShim();
For
TypeScript 3.3.3
, just addes2018.promise
to yourtsconfig.json
-compilerOptions.lib
config like this:"lib": ["es2015", "es2016", "dom", "es2018.promise"]
If you use
vscode
, maybe you shouldreload window
after adding this option to yourtsconfig.json
file