## 背景 以下のような[[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を使ってみる]]%%