mcpField
T
typescript-strict

typescript-strict

github.com/laurigates開発5947 回インストール今日更新
リポジトリ

typescript-strict について

TypeScript開発者向けの設定ガイドです。厳格な型チェック、モジュール解決、最新のインポート構文を扱い、推奨する tsconfig.json の設定と確認コマンドを紹介します。

主な機能

  1. 01厳格な型チェック設定
  2. 02推奨 tsconfig.json 構成
  3. 03Bundler と NodeNext の解決方式
  4. 04verbatimModuleSyntax のインポート規則
  5. 05TypeScript 確認コマンド

活用シーン

  1. 01新規プロジェクトで厳格な型チェックを設定
  2. 02プロジェクトに合うモジュール解決方式の選択
  3. 03設定と型エラーのコマンド確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/laurigates/claude-plugins --skill typescript-strict

インストール後、Claude Code で/typescript-strictを入力して読み込まれたか確認します。

同梱ファイルREFERENCE.md

詳細

TypeScript Strict Mode

最大限の安全性と開発者体験を実現する、厳密な型チェックを備えた最新の TypeScript 設定です。このガイドでは、2025 年における TypeScript 5.x のベストプラクティスに焦点を当てます。

主な専門知識

Strict Mode とは?

  • 型安全性:コンパイル時により多くのバグを検出します
  • IDE でのより良い体験:オートコンプリートとリファクタリングが向上します
  • 保守性:明示的な型を使った自己文書化コードを実現します
  • 最新のデフォルト設定:現在の TypeScript のベストプラクティスに沿っています

主な機能

  • 厳密な null チェック
  • 厳密な関数型
  • 暗黙的な any の禁止
  • インデックスアクセス時の未チェックを禁止
  • 適切なモジュール解決
  • 最新の import/export 構文の適用

推奨する tsconfig.json(2025 年)

最小限の本番環境向け設定
{
  "compilerOptions": {
    // Type Checking
    "strict": true,
    "noUncheckedIndexedAccess": true,
    "noImplicitOverride": true,
    "noPropertyAccessFromIndexSignature": true,
    "noFallthroughCasesInSwitch": true,
    "noUnusedLocals": true,
    "noUnusedParameters": true,

    // Modules
    "module": "ESNext",
    "moduleResolution": "Bundler",
    "resolveJsonModule": true,
    "allowSyntheticDefaultImports": true,
    "esModuleInterop": false,
    "verbatimModuleSyntax": true,

    // Emit
    "target": "ES2022",
    "lib": ["ES2023", "DOM", "DOM.Iterable"],
    "outDir": "dist",
    "declaration": true,
    "declarationMap": true,
    "sourceMap": true,
    "removeComments": false,
    "noEmit": false,

    // Interop
    "isolatedModules": true,
    "allowJs": false,
    "checkJs": false,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules", "dist", "build"]
}

Strict フラグの説明

strict: true(包括フラグ)

すべての厳密な型チェックオプションを有効にします。

{
  "strict": true
  // Equivalent to:
  // "noImplicitAny": true,
  // "strictNullChecks": true,
  // "strictFunctionTypes": true,
  // "strictBindCallApply": true,
  // "strictPropertyInitialization": true,
  // "noImplicitThis": true,
  // "alwaysStrict": true
}

新しいプロジェクトでは、常に strict: true を有効にしてください。

追加の Strict フラグ(2025 年に推奨)
フラグ目的
noUncheckedIndexedAccessインデックスシグネチャの戻り値を T ではなく T | undefined にします
noImplicitOverrideオーバーライドするメソッドに override キーワードを必須にします
noPropertyAccessFromIndexSignatureインデックスシグネチャへのアクセスにブラケット記法を必須にします
noFallthroughCasesInSwitchswitch 文でのフォールスルーを防ぎます
exactOptionalPropertyTypesオプショナルプロパティに undefined を明示的に設定できないようにします
noUncheckedIndexedAccess(必須)
// With noUncheckedIndexedAccess
const users: Record<string, User> = {};
const user = users['john'];
// Type: User | undefined (correct - must check before use)

if (user) {
  console.log(user.name); // Type narrowed to User
}

実行時エラーを防ぐため、このフラグは常に有効にしてください。

モジュール解決

戦略の選択
戦略用途拡張子の指定
BundlerVite、Webpack、Bun のプロジェクト不要
NodeNextNode.js のライブラリとサーバー必要(.js)
moduleResolution: "Bundler"(Vite/Bun)
{
  "compilerOptions": {
    "module": "ESNext",
    "moduleResolution": "Bundler"
  }
}
  • import でファイル拡張子を指定する必要はありません
  • アサーションなしで JSON をインポートできます
  • package.json の exports フィールドをサポートします
moduleResolution: "NodeNext"(Node.js)
{
  "compilerOptions": {
    "module": "NodeNext",
    "moduleResolution": "NodeNext"
  }
}
  • package.json の type: "module" に従います
  • 明示的な .js 拡張子が必要です(.ts ファイルの場合も同様)
  • 条件付きエクスポートをサポートします

verbatimModuleSyntax(2025 年に推奨)

TypeScript による import/export の書き換えを防ぎます。

{
  "compilerOptions": {
    "verbatimModuleSyntax": true
  }
}
// Error: 'User' is a type and must be imported with 'import type'
import { User } from './types';

// Correct
import type { User } from './types';

// Correct (mixed import)
import { fetchUser, type User } from './api';

非推奨の importsNotUsedAsValues と preserveValueImports を置き換えます。

エージェント向けの最適化

コンテキストコマンド
エラーを確認bunx tsc --noEmit
単一ファイルを確認bunx tsc --noEmit src/utils.ts
設定を表示bunx tsc --showConfig
モジュール解決を確認bunx tsc --showConfig | grep moduleResolution

クイックリファレンス

推奨フラグ
フラグ値カテゴリー
stricttrue型チェック
noUncheckedIndexedAccesstrue型チェック
noImplicitOverridetrue型チェック
noPropertyAccessFromIndexSignaturetrue型チェック
noFallthroughCasesInSwitchtrue型チェック
moduleESNext / NodeNextモジュール
moduleResolutionBundler / NodeNextモジュール
verbatimModuleSyntaxtrueモジュール
targetES2022出力
libTemporal 型を使うには "ESNext" を追加します(TS 6.0 以降)。typescript-temporal を参照してください型チェック
isolatedModulestrue相互運用性
skipLibChecktrue相互運用性

詳しい例、高度なパターン、ベストプラクティスについては、REFERENCE.md を参照してください。

参考資料

コメント