typescript/promise-function-async 제한
작동 방식
이 규칙은 프로미스를 반환하는 모든 함수 또는 메서드가 async로 표시되어야 함을 요구합니다.
왜 좋지 않은가?
프로미스를 반환하는 함수는 일반적으로 그 비동기성의 특성을 명확히 하기 위해 async로 표시해야 하며, 내부에서 await 사용이 가능하도록 해야 합니다. 이를 통해 코드의 가독성이 향상되고, 프로미스 처리 시 발생하는 일반적인 실수를 방지할 수 있습니다.
예시
이 규칙에 잘못된 코드 예시:
ts
// async 없이 프로미스를 반환하는 함수
function fetchData(): Promise<string> {
return fetch("/api/data").then((res) => res.text());
}
// async 없이 프로미스를 반환하는 메서드
class DataService {
getData(): Promise<any> {
return fetch("/api/data").then((res) => res.json());
}
}
// async 없이 프로미스를 반환하는 화살표 함수
const processData = (): Promise<void> => {
return Promise.resolve();
};이 규칙에 올바른 코드 예시:
ts
// async 함수
async function fetchData(): Promise<string> {
const response = await fetch("/api/data");
return response.text();
}
// async 메서드
class DataService {
async getData(): Promise<any> {
const response = await fetch("/api/data");
return response.json();
}
}
// async 화살표 함수
const processData = async (): Promise<void> => {
await someAsyncOperation();
};
// 프로미스를 반환하지 않는 함수는 문제 없음
function syncFunction(): string {
return "hello";
}
// 실제 프로미스가 아니지만 프로미스처럼 보이는 반환값을 반환하는 함수
function createThenable(): { then: Function } {
return { then: () => {} };
}구성
이 규칙은 다음 속성을 포함하는 구성 객체를 수용합니다.
allowAny
type: boolean
기본값: true
async 키워드 없이 any 타입을 반환하는 함수를 허용할지 여부.
allowedPromiseNames
type: string[]
기본값: []
async 키워드 없이도 허용되는 프로미스 타입 이름 목록입니다.
예: ["SpecialPromise"]로 설정하면 SpecialPromise를 반환하는 함수에 async가 필요 없도록 허용합니다.
checkArrowFunctions
type: boolean
기본값: true
화살표 함수에서 async 키워드 누락 여부를 확인할지 여부.
checkFunctionDeclarations
type: boolean
기본값: true
함수 선언에서 async 키워드 누락 여부를 확인할지 여부.
checkFunctionExpressions
type: boolean
기본값: true
함수 표현식에서 async 키워드 누락 여부를 확인할지 여부.
checkMethodDeclarations
type: boolean
기본값: true
메서드 선언에서 async 키워드 누락 여부를 확인할지 여부.
사용 방법
이 규칙을 구성 파일 또는 CLI를 통해 활성화하려면 다음을 사용하세요:
json
{
"rules": {
"typescript/promise-function-async": "error"
}
}bash
oxlint --type-aware --deny typescript/promise-function-async