属性'finally'在'Promise <void>'类型中不存在

JJ *_*ell 22 typescript ionic-framework angular

我试图在promise上使用finally方法,但我不断收到此错误.

Property 'finally' does not exist on type 'Promise<void>'.
Run Code Online (Sandbox Code Playgroud)

我已经查到了类似的问题,建议在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'.
Run Code Online (Sandbox Code Playgroud)

任何帮助解决这个问题非常感谢!

sli*_*wp2 28

对于TypeScript 3.3.3,只需添加es2018.promise到您的tsconfig.json- compilerOptions.lib配置是这样的:

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

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


小智 6

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

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

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


JBC*_*JBC 5

直到TypeScript 2.7才添加ES2018支持.升级到该版本或更高版本可以解决此错误.