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)과 같은 값 반환 방식을 문법적 소음(불필요한 코드)이라고 생각합니다.
예시
이 규칙에 맞지 않는 잘못된 코드 예시:
myPromise().then(() => Promise.resolve(4));
myPromise().then(function () {
return Promise.resolve(4);
});
myPromise().then(() => Promise.reject("err"));
myPromise().then(function () {
return Promise.reject("err");
});myPromise().catch(function () {
return Promise.reject("err");
});myPromise().finally(function () {
return Promise.reject("err");
});myPromise().finally(() => Promise.resolve(4));이 규칙에 맞는 올바른 코드 예시:
myPromise().then(() => 4);
myPromise().then(function () {
return 4;
});
myPromise().then(() => throw "err");
myPromise().then(function () {
throw "err";
});myPromise().catch(function () {
throw "err";
});myPromise().finally(() => 4);구성
이 규칙은 다음 속성을 가진 구성 객체를 받습니다:
allowReject
type: boolean
기본값: false
allowReject는 프로미스 핸들러 내부에서 Promise.reject를 반환하도록 허용합니다.
allowReject가 true로 설정되면 다음은 올바른 코드의 예시입니다:
myPromise().then(function () {
return Promise.reject(0);
});myPromise()
.then()
.catch(() => Promise.reject("err"));사용 방법
설정 파일 또는 명령줄 인터페이스에서 이 규칙을 활성화하려면 다음과 같이 사용할 수 있습니다:
{
"plugins": ["promise"],
"rules": {
"promise/no-return-wrap": "error"
}
}oxlint --deny promise/no-return-wrap --promise-plugin