typescript/require-await 厳格
何をしますか
このルールは、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;
}使い方
このルールを設定ファイルまたは CLI で有効化するには、次のように使用できます:
json
{
"rules": {
"typescript/require-await": "error"
}
}bash
oxlint --type-aware --deny typescript/require-await