typescript/no-misused-promises Pedantic
무엇을 수행합니까
이 규칙은 타입스크립트 컴파일러가 허용하나 적절히 처리되지 않는 로직적 위치(예: if 문 내부 등)에 프로미스를 제공하는 것을 금지합니다. 이러한 상황은 일반적으로 await 키워드 누락 또는 비동기 함수의 처리/대기 방식에 대한 오해로 인해 발생할 수 있습니다.
왜 좋지 않은가요?
잘못 사용된 프로미스는 예외적인 동작이나 크래시를 유발할 수 있으며, 전역적으로 처리되지 않은 프로미스 핸들러가 등록되어 있지 않은 경우 더욱 그렇습니다.
예시
이 규칙에 대해 틀린 코드 예시:
// 조건문 내 프로미스:
const promise = Promise.resolve("value");
if (promise) {
// 무언가 수행
}
// `void` 반환을 기대하는 곳에서 프로미스 사용:
[1, 2, 3].forEach(async (value) => {
await fetch(`/${value}`);
});
// 프로미스 전개:
const getData = () => fetch("/");
console.log({ foo: 42, ...getData() });이 규칙에 대해 올바른 코드 예시:
// 조건문에서 프로미스 값을 얻기 위해 `await` 사용:
const promise = Promise.resolve("value");
if (await promise) {
// 무언가 수행
}
// `forEach` 대신 `for-of`와 함께 `await` 사용:
for (const value of [1, 2, 3]) {
await fetch(`/${value}`);
}
// 프로미스 자체가 아니라 프로미스로부터 반환된 데이터를 전개:
const getData = () => fetch("/");
console.log({ foo: 42, ...(await getData()) });구성 방법
이 규칙은 다음 속성을 가진 구성 객체를 수락합니다.
checksConditionals
type: boolean
기본값: true
프로미스가 조건문에 사용되었는지 확인할지 여부.true인 경우, 불리언이 필요한 곳에서 프로미스 사용을 금지합니다.
checksSpreads
type: boolean
기본값: true
프로미스가 전개 구문에 사용되었는지 확인할지 여부.true인 경우, 프로미스 값의 전개를 금지합니다.
checksVoidReturn
type: object | boolean
checksVoidReturn.arguments
type: boolean
기본값: true
void를 반환하는 함수에 전달된 프로미스를 반환하는 함수를 검사할지 여부.
checksVoidReturn.attributes
type: boolean
기본값: true
void를 기대하는 JSX 속성 내에 프로미스를 반환하는 함수를 검사할지 여부.
checksVoidReturn.inheritedMethods
type: boolean
기본값: true
void를 반환하는 상속된 메서드를 오버라이드하는 프로미스를 반환하는 메서드를 검사할지 여부.
checksVoidReturn.properties
type: boolean
기본값: true
void를 기대하는 객체 속성에 할당된 프로미스를 반환하는 함수를 검사할지 여부.
checksVoidReturn.returns
type: boolean
기본값: true
void를 반환하는 함수로부터 반환된 프로미스 값을 검사할지 여부.
checksVoidReturn.variables
type: boolean
기본값: true
void를 반환하는 타입으로 지정된 변수에 할당된 프로미스를 반환하는 함수를 검사할지 여부.
사용 방법
이 규칙을 설정 파일 또는 명령줄 인터페이스에서 활성화하려면 다음을 사용할 수 있습니다:
{
"rules": {
"typescript/no-misused-promises": "error"
}
}oxlint --type-aware --deny typescript/no-misused-promises