tslint --project tsconfig.json src/**/*.ts
を使用してプロジェクト全体をtslintすると、次のようなtslintエラーが多数発生します。
Promise以外の値の無効な「await」。
これらのエラーは、Bluebirdの約束を待っているすべての行に表示されます。これらの警告を回避するために何をすべきか疑問に思いますか?実行時に問題は発生しませんが、これらの問題を修正する正当な理由があると思いますか?
たとえば、すべてのPromiseにBluebirdを使用するamqplibライブラリを使用しています。そして、promiseベースのメソッドの1つを待つたびに、tslintエラーが発生します。
const queueInfo: Replies.AssertQueue = await this.channel.assertQueue(this.jobQueueName);
質問:
Bluebirdの約束のようなPromise以外の値を待つための最良の方法は何ですか?
TSLintには、await
式でpromiseとして扱うタイプを示す設定が含まれているようです。
https://palantir.github.io/tslint/rules/await-promise/
私はこれを自分で試したことはありませんが、Bluebirdの約束を待つためにこれを使用できるはずです。
"await-promise": [true, "Bluebird"]
Promise.resolve
を使用して、任意の「thenable」オブジェクト(少なくともthen()
メソッドを使用)をネイティブPromise
に変換できます。
const queueInfo: Replies.AssertQueue = await Promise.resolve(this.channel.assertQueue(this.jobQueueName));
代替構文(少しクロージャーのために効率が低下します):
const queueInfo: Replies.AssertQueue = await Promise.resolve().then(() =>
this.channel.assertQueue(this.jobQueueName)
);