typescript/require-await Pedantic
작동 방식
이 규칙은 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