typescript/prefer-promise-reject-errors Pedantic
작동 방식
이 규칙은 Promise.reject()에 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
기본값: false
매개변수가 없는 상태에서 Promise.reject()를 호출하는 것을 허용할지 여부.
allowThrowingAny
type: boolean
기본값: false
any 타입으로 지정된 값으로 프로미스를 거부하는 것을 허용할지 여부.
allowThrowingUnknown
type: boolean
기본값: false
unknown 타입으로 지정된 값으로 프로미스를 거부하는 것을 허용할지 여부.
사용 방법
이 규칙을 설정 파일 또는 CLI에서 활성화하려면 다음을 사용할 수 있습니다:
json
{
"rules": {
"typescript/prefer-promise-reject-errors": "error"
}
}bash
oxlint --type-aware --deny typescript/prefer-promise-reject-errors