类型“ Promise <void>”上不存在属性“ finally”

时间:2018-08-29 13:49:45

标签: angular typescript ionic-framework

我正在诺言中尝试使用finally方法,但是我一直收到此错误。

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

我已经查找了与此类似的问题,这些问题建议在tsconfig.js中的“ lib”数组中添加“ es2018.promise”。然后,将产生以下错误:

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'.

任何帮助解决此问题的方法,将不胜感激!

5 个答案:

答案 0 :(得分:5)

直到TypeScript 2.7才添加

ES2018支持。升级到该版本或更高版本可解决此错误。

答案 1 :(得分:5)

尽管TypeScript 2.7可能支持它,但您需要在tsconfig.json中定位目标:“ ESNEXT”。

这意味着您的代码可能不会在较旧的浏览器或node.js版本中运行。

我正在使用: “ @ types / promise.prototype.finally”:“ ^ 2.0.2”, 从'promise.prototype.finally'导入{shim as finallyShim}; finallyShim();

答案 2 :(得分:4)

对于TypeScript 3.3.3,只需将es2018.promise添加到tsconfig.json-compilerOptions.lib的配置中,如下所示:

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

如果您使用vscode,则在将此选项添加到reload window文件中之后,也许应该tsconfig.json

答案 3 :(得分:0)

我通过使用此https://www.npmjs.com/package/promise.prototype.finally修复了该问题,因为这似乎与非离子打字稿有关。我想它将在不久的将来解决。

感谢所有为我提供帮助的人。

答案 4 :(得分:0)

请确保先安装yarn / npm,如果es2018.promise中已有tsconfig.json,则安装后错误会消失。