Closed kei615ykhm closed 1 month ago
バリデーションライブラリzodを導入し、型安全なコーディングを行うための下準備としてESLint、Prettier、tsconfigルール設定等の環境調整を行いました。
zod
ESLint
Prettier
tsconfig
Next.js
React
TypeScript
Tailwind CSS
my-project/ │ ├── src/ ├── .eslintrc.json # ESLintの設定ファイル ├── .prettierrc # Prettierの設定ファイル ├── .eslintignore # ESLintの除外ファイル ├── .prettierignore # Prettierの除外ファイル ├── package.json # プロジェクトの依存関係 └── tsconfig.json # TypeScriptの設定ファイル
全体としては、eslint-config-nextとeslint-plugin-prettierの設定により、両方のツールが競合しないような動作とTypeScriptの型安全なルールの調節を行いました。
eslint-config-next
eslint-plugin-prettier
初期の環境設定として追加しているeslint-config-nextをベースにPrettierとの競合を防ぐ設定を行いました。eslint-config-prettierとeslint-plugin-prettierを追加し、Prettierとの連携を円滑にする意図があります。
eslint-config-prettier
next/core-web-vitals
plugin:@typescript-eslint/recommended
plugin:prettier/recommended
@typescript-eslint/consistent-type-assertions
assertionStyle": "never
@typescript-eslint/no-explicit-any": "error"
any
@typescript-eslint/no-unused-vars
_
VSCodeの拡張機能と連携し、コードを保存した際に自動フォーマットするように設定を行いました。
VSCode
フォーマットや静的解析からnode_modulesとbuildディレクトリを除外するように定義しました。こちらの設定は今後の開発で随時変更する予定です。
node_modules
build
VSCodeで保存時に自動フォーマットを適用するための設定ファイルを定義しました。
editor.formatOnSave": true
editor.defaultFormatter: "esbenp.prettier-vscode
source.fixAll.eslint": explicit
既存ルールを土台として、これまでに学習した中で学んだ範囲で想像可能なものを追加しました。
noImplicitAny
strictNullChecks
strictFunctionTypes
strictBindCallApply
noImplicitThis
alwaysStrict
現在、/src/components/memos/MemoForm.tsxにuseStateの警告(@typescript-eslint/no-unused-vars)が発生していますが、将来的に使用予定であるため、現時点では修正を行いません。
/src/components/memos/MemoForm.tsx
useState
TODOコメントで意図を明示しています。
no-unused-vars
バリデーションライブラリ
zod
を導入し、型安全なコーディングを行うための下準備としてESLint
、Prettier
、tsconfig
ルール設定等の環境調整を行いました。関連Issue
11
現在の依存関係
Next.js
: 14.xReact
: 18.xTypeScript
: 5.xTailwind CSS
: 3.xESLint
: 8.x(初期環境構築を行った際から変更なし)追加/変更ファイル
各設定ファイルの説明
全体としては、
eslint-config-next
とeslint-plugin-prettier
の設定により、両方のツールが競合しないような動作とTypeScriptの型安全なルールの調節を行いました。.eslintrc.json
初期の環境設定として追加している
eslint-config-next
をベースにPrettier
との競合を防ぐ設定を行いました。eslint-config-prettier
とeslint-plugin-prettier
を追加し、Prettierとの連携を円滑にする意図があります。next/core-web-vitals
: Next.js向けのESLintルールplugin:@typescript-eslint/recommended
: TypeScript向けのESLintルールplugin:prettier/recommended
: Prettierとの競合を防ぐ設定@typescript-eslint/consistent-type-assertions
: 型アサーションの使用を制限し、assertionStyle": "never
の指定で完全に禁止@typescript-eslint/no-explicit-any": "error"
: 暗黙的なany
型の使用禁止@typescript-eslint/no-unused-vars
: 未使用の変数をチェックし、引数名の先頭に_
がついている場合は無視する.prettierrc
VSCode
の拡張機能と連携し、コードを保存した際に自動フォーマットするように設定を行いました。.eslintignoreと.prettierignore
フォーマットや静的解析から
node_modules
とbuild
ディレクトリを除外するように定義しました。こちらの設定は今後の開発で随時変更する予定です。vscode/settings.json
VSCode
で保存時に自動フォーマットを適用するための設定ファイルを定義しました。editor.formatOnSave": true
: 保存時に自動でフォーマットeditor.defaultFormatter: "esbenp.prettier-vscode
: Prettierをデフォルトフォーマッタに設定source.fixAll.eslint": explicit
: ESLintのルールに基づいて自動修正TypeScriptのルール定義
tsconfig.json
既存ルールを土台として、これまでに学習した中で学んだ範囲で想像可能なものを追加しました。
noImplicitAny
: 暗黙的なany型を禁止して、型安全性を向上strictNullChecks
: nullやundefinedの扱いを厳格にしてエラーを早期発見strictFunctionTypes
: 関数の互換性チェックを強化strictBindCallApply
: bind、call、applyの型チェックを厳格にするnoImplicitThis
: thisが暗黙的にanyにならないようにするalwaysStrict
: 常に厳格モードを適用注意点
現在、
/src/components/memos/MemoForm.tsx
にuseState
の警告(@typescript-eslint/no-unused-vars
)が発生していますが、将来的に使用予定であるため、現時点では修正を行いません。TODOコメントで意図を明示しています。
参考文献
no-unused-vars