typescript/prefer-promise-reject-errors 严格
它的作用
此规则强制要求向 Promise.reject() 传递一个 Error 对象。
为什么这是不好的?
按照最佳实践,应仅使用 Error 对象来拒绝承诺(Promise)。这是因为 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 的值来拒绝承诺(Promise)。
allowThrowingUnknown
type: boolean
default: false
是否允许使用类型为 unknown 的值来拒绝承诺(Promise)。
如何使用
要通过配置文件或 CLI 启用此规则,可以使用:
json
{
"rules": {
"typescript/prefer-promise-reject-errors": "error"
}
}bash
oxlint --type-aware --deny typescript/prefer-promise-reject-errors