📝

tsconfig.jsonとかの設定ファイルの備忘録

2024/12/09に公開

Next.jsの設定ファイル

tsconfig.jsonの設定

{
  "compilerOptions": {
    "baseUrl": "src",
    "target": "es5",
    "lib": ["dom", "dom.iterable", "esnext"],
    "allowJs": false,
    "skipLibCheck": true,
    "strict": true,
    "noEmit": true,
    "esModuleInterop": true,
    "module": "esnext",
    "moduleResolution": "bundler",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "jsx": "preserve",
    "incremental": true,
    "forceConsistentCasingInFileNames": true,
    "noImplicitReturns": true,
    "noImplicitAny": true,
    "noFallthroughCasesInSwitch":true,
    "noUncheckedIndexedAccess": true,
    "noImplicitOverride": true,
    "plugins": [
      {
        "name": "next"
      }
    ],
    "paths": {
      "@/*": ["./src/*"]
    }
  },
  "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
  "exclude": ["node_modules"]
}

https://nextjs.org/docs/pages/api-reference/config/typescript
基本は自動で生成されるもので問題なし

設定時のポイント

allowJs:false

javascriptのファイルは使用しないことを前提にするため許容しない

strict:true

strict系オプションを一律trueで設定できる

alwaysStrict:strict modeで解釈をし、出力されるjavascriptにも"use strict"を追加する
strictNullChecks:Nullとundefinedを使うときは明示的に指定する
strictBindCallApply:Functionのbind() call() apply()メソッドを厳格に型付けする
strictFunctionTypes:関数のパラメータの型をチェックする
strictPropertyInitialization:コンストラクターで値が設定されているかをチェックする
noImplicitAny:型がanyとなる場合エラーとする
noImplicitThis:thisの型がanyとなる場合エラーとする
useUnknownInCatchVariables:catchの例外変数のデフォルトの型がunknownになる

noImplicitReturns:true

関数の戻り値がvoid以外の場合、returnを必須とする

noFallthroughCasesInSwitch:true

switch分にてcase句の中にbreakかreturnを必須とする

noUncheckedIndexedAccess:true

型の未定義のフィールドに対してundefinedが追加される

noImplicitOverride:true

スーパークラスのメソッドをオーバーライドするとき、overrideを必須にする

.pritterrc.jsonの設定

{
  "printWidth": 120,
  "tabWidth": 2,
  "semi": true,
  "trailingComma": "all",
  "singleQuote": true,
  "arrowParens": "always",
  "endOfLine": "lf"
}

printWidth:一行の文字数

デフォルト80

tabWidth:インデントのサイズ

デフォルト2

semi:行末にセミコロン

デフォルトtrue

trailingComma:末尾にカンマをつける

デフォルトes5

singleQuote:シングルクォーテーションで囲む

デフォルトfalse

arrowParens:アロー関数の引数をかっこで囲む

デフォルトalways

endOfLine:改行コードの指定

デフォルトlf

.eslintrc.jsonの設定

{
  "extends": [
    "eslint:recommended",
    "plugin:@typescript-eslint/recommended-type-checked",
    "next/core-web-vitals",
    "plugin:tailwindcss/recommended",
    "prettier"
  ],
  "parser": "@typescript-eslint/parser",
  "parserOptions": {
    "project": "./tsconfig.json"
  },
  "plugins": ["unused-imports"],
  "rules": {
    "unused-imports/no-unused-imports": "error"
  }
}

初期プロジェクトから追加で設定したもの

ESLintの推奨設定の追加

typescript用の設定の追加

Discussion