promise/no-return-wrap スタイル
何をするか
Promise.resolve または Promise.reject で返り値を不要にプロミスでラップするのを防ぎます。
このルールは以下の立場を強制します:
プロミスを解決する場合、
Promise.resolve(value)を返す代わりに、単にreturn valueとすることで生の値を返すほうが良いです。プロミスを拒否する場合、
Promise.reject(error)を返す代わりに、throw errorとして生のエラー値を投げるべきです。
2 の強制を無効化するオプションがあります。詳しくは以下のオプションセクションをご覧ください。
なぜ問題なのか
then や catch キャブバックの戻り文で、生の値をプロミスに変換するために Promise.resolve や Promise.reject を使う必要はありません。成功ケースでは単に生の値を返し、失敗ケースでは生のエラー値を投げることで、同じ効果が得られます。そのため、一部の人々は Promise.resolve(1) や Promise.reject(err) のような値を返すことを構文的なノイズと考えるのです。
例
このルールに対して不適切なコードの例:
js
myPromise().then(() => Promise.resolve(4));
myPromise().then(function () {
return Promise.resolve(4);
});
myPromise().then(() => Promise.reject("err"));
myPromise().then(function () {
return Promise.reject("err");
});js
myPromise().catch(function () {
return Promise.reject("err");
});js
myPromise().finally(function () {
return Promise.reject("err");
});js
myPromise().finally(() => Promise.resolve(4));このルールに対して適切なコードの例:
js
myPromise().then(() => 4);
myPromise().then(function () {
return 4;
});
myPromise().then(() => throw "err");
myPromise().then(function () {
throw "err";
});js
myPromise().catch(function () {
throw "err";
});js
myPromise().finally(() => 4);設定
このルールは、以下のプロパティを持つ設定オブジェクトを受け入れます:
allowReject
型: boolean
デフォルト: false
allowReject は、プロミスハンドラ内で Promise.reject を返すことを許可します。
allowReject が true に設定されている場合、以下のコードは適切な例となります:
js
myPromise().then(function () {
return Promise.reject(0);
});js
myPromise()
.then()
.catch(() => Promise.reject("err"));使用方法
設定ファイルまたは CLI でこのルールを有効化するには、次のようにします:
json
{
"plugins": ["promise"],
"rules": {
"promise/no-return-wrap": "error"
}
}bash
oxlint --deny promise/no-return-wrap --promise-plugin