Skip to content
← Back to rules

typescript/prefer-promise-reject-errors 厳格な

💭 This rule requires type information.

何をするか

このルールは、Promise.reject()Error オブジェクトを渡すことを強制します。

なぜ悪いのか

プロミスの拒否には Error オブジェクトのみを使用することが良い習慣とされています。これは、Error オブジェクトが自動的にスタックトレースをキャプチャするためであり、デバッグに役立ちます。さらに、一部のツールや環境では、拒否理由が Error オブジェクトであることを期待しています。

このルールに対して 不正 なコードの例:

ts
Promise.reject("error"); // 文字列で拒否

Promise.reject(42); // 数値で拒否

Promise.reject(true); // 真偽値で拒否

Promise.reject({ message: "error" }); // 普通のオブジェクトで拒否

Promise.reject(null); // nullで拒否

Promise.reject(); // undefinedで拒否

const error = "Something went wrong";
Promise.reject(error); // Errorオブジェクトではない変数で拒否

このルールに対して 正しく なコードの例:

ts
Promise.reject(new Error("Something went wrong"));

Promise.reject(new TypeError("Invalid type"));

Promise.reject(new RangeError("Value out of range"));

// カスタムエラークラス
class CustomError extends Error {
  constructor(message: string) {
    super(message);
    this.name = "CustomError";
  }
}
Promise.reject(new CustomError("Custom error occurred"));

// Errorオブジェクトである変数
const error = new Error("Error message");
Promise.reject(error);

設定

このルールは、以下のプロパティを持つ設定オブジェクトを受け取ります。

allowEmptyReject

type: boolean

default: false

引数なしで Promise.reject() を呼び出すことを許可するかどうか。

allowThrowingAny

type: boolean

default: false

型が any の値でプロミスを拒否することを許可するかどうか。

allowThrowingUnknown

type: boolean

default: false

型が unknown の値でプロミスを拒否することを許可するかどうか。

使用方法

このルールを有効にするには、設定ファイルまたは CLI で次のように使用できます:

json
{
  "rules": {
    "typescript/prefer-promise-reject-errors": "error"
  }
}
bash
oxlint --type-aware --deny typescript/prefer-promise-reject-errors

参照