## 背景
以下のような[[await (JavaScript)|await]]付け忘れは時に深刻な不具合を生む。そのくせに目視以外の方法で気づくのが難しい。これをエラーにしたい。
```ts
async function asyncFunction(): Promise<void> {
return;
}
// awaitがついていない
asyncFunction();
```
## 方法
### [[Biome]]の場合
> [[Promiseを返す関数をawaitなしで呼び出したときはエラーにする (Biome)|Promiseを返す関数をawaitなしで呼び出したときはエラーにする]]
### [[ESLint]]の場合
[[ESLint]]と[[typescript-eslint]]を導入し、`tseslint.configs.recommendedTypeChecked` と `languageOptions.parserOptions.project` を指定する。
以下はデフォルトの作成方法からの差分。
```js
import js from "@eslint/js";
import globals from "globals";
import tseslint from "typescript-eslint";
import { defineConfig } from "eslint/config";
export default defineConfig([
{
files: ["**/*.{js,mjs,cjs,ts}"],
plugins: { js },
extends: ["js/recommended"],
},
{
files: ["**/*.{js,mjs,cjs,ts}"],
languageOptions: {
globals: globals.browser,
// 追加
parserOptions: {
project: "./tsconfig.json",
},
},
},
tseslint.configs.recommended,
// 追加
tseslint.configs.recommendedTypeChecked,
]);
```
以下も参考に。
<div class="link-card-v2">
<div class="link-card-v2-site">
<img class="link-card-v2-site-icon" src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/favicon-64.png" />
<span class="link-card-v2-site-name">Minerva</span>
</div>
<div class="link-card-v2-title">
📜2025-04-19 pnpmでESLint9を使ってみる
</div>
<div class="link-card-v2-content">ESLintのv9をpnpmベースのプロジェクトで使ってみた記録。</div>
<img class="link-card-v2-image" src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/Notes/attachments/activity.webp" />
<a data-href="📜2025-04-19 pnpmでESLint9を使ってみる" class="internal-link"></a>
</div>
%%[[📜2025-04-19 pnpmでESLint9を使ってみる]]%%