Skip to content
← Back to rules

typescript/require-await 厳格

💭 This rule requires type information.
An auto-fix is available for this rule.

何をしますか

このルールは、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

参照