Skip to content
← Back to rules

typescript/require-await Pedantic

💭 This rule requires type information.
🚧 An auto-fix is planned for this rule, but not implemented at this time.

작동 방식

이 규칙은 await 표현식이 없는 비동기 함수를 허용하지 않습니다.

왜 좋지 않은가?

await를 사용하지 않는 비동기 함수는 일반적으로 실수입니다. 불필요하게 Promise를 반환하며, 대부분의 경우 일반 함수로 전환할 수 있습니다. 이를 통해 성능을 개선하고 코드의 가독성을 높일 수 있습니다.

예시

이 규칙에 부적절한 코드 예시:

ts
// await 없이 비동기 함수
async function fetchData() {
  return fetch("/api/data");
}

// await 없이 비동기 화살표 함수
const processData = async () => {
  return someData.map((x) => x * 2);
};

// await 없이 비동기 메서드
class DataService {
  async getData() {
    return this.data;
  }
}

// Promise를 반환하지만, `await`하지 않는 비동기 함수
async function getPromise() {
  return Promise.resolve("value");
}

이 규칙에 적절한 코드 예시:

ts
// await를 포함하는 비동기 함수
async function fetchData() {
  const response = await fetch("/api/data");
  return response.json();
}

// Promise를 반환하는 일반 함수
function fetchDataSync() {
  return fetch("/api/data");
}

// 조건부에서 `await`를 사용하는 비동기 함수
async function conditionalAwait(condition: boolean) {
  if (condition) {
    return await someAsyncOperation();
  }
  return "default";
}

// 반복문 내에서 `await`를 사용하는 비동기 함수
async function processItems(items: string[]) {
  const results = [];
  for (const item of items) {
    results.push(await processItem(item));
  }
  return results;
}

사용 방법

설정 파일 또는 명령줄 인터페이스를 통해 이 규칙을 활성화하려면 다음을 사용할 수 있습니다:

json
{
  "rules": {
    "typescript/require-await": "error"
  }
}
bash
oxlint --type-aware --deny typescript/require-await

참고 자료