Skip to content
← Back to rules

typescript/prefer-promise-reject-errors Pedantic

💭 This rule requires type information.

작동 방식

이 규칙은 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

참고 자료