web-dev-qa-db-ja.com

プロパティ 'finally'はタイプ 'Promise <void>'に存在しません

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

これを解決するための助けは大歓迎です!

15
JJ Pell

TypeScript 3.3.3の場合は、es2018.promiseを次のようにtsconfig.json-compilerOptions.lib configに追加するだけです。

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

vscodeを使用する場合は、reload windowファイルにこのオプションを追加した後、tsconfig.jsonを使用する必要があります。

21
slideshowp2

TypeScript 2.7でサポートされる場合がありますが、tsconfig.jsonで「ESNEXT」をターゲットにする必要があります。

つまり、コードはおそらく古いブラウザーまたはnode.jsバージョンでは実行されません。

私は以下を使用しています: "@ types/promise.prototype.finally": "^ 2.0.2"、import {shim as finallyShim} from 'promise.prototype.finally'; finallyShim();

6
rod howard

ES2018サポートは、 TypeScript 2.7 まで追加されませんでした。そのバージョン以降にアップグレードすると、このエラーは解決します。

5
JBC

これを使用してこれを修正しました https://www.npmjs.com/package/promise.prototype.finally ionic not TypeScript近い将来修正されると思います。

これを手伝ってくれたみんなに感謝します。

0
JJ Pell