Vitestと型チェック

Vitestの場合、テストファイルは別途型チェックが必要です


はじめに

Vitestの場合、テストファイルは別途型チェックが必要です。 Vitestはテスト高速化のためテスト実行時の型チェックを省略しているためです。 (@swc/jestも同じです)

以下、Vitest公式リポジトリを参考に設定を追加したメモです。

各種設定

型チェックコマンドの追加

// package.json
{
  "scripts": {
    // tsconfigで別途`"exclude": ["node_modules"]`等しておきましょう
    // 以下指定ではtestファイル以外も型チェックしています。テストファイルだけチェックしたい場合はtsconfigの分離等で対応できます。
    "typecheck": "tsc --noEmit"
  },
}

CIの追加

# .github/workflows/ci.yml等
  typecheck:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      - name: Setup node
        uses: actions/setup-node@v3
        with:
          node-version: 16.x

      - name: Install
        run: yarn install --frozen-lockfile

      - name: Typecheck
        run: yarn typecheck