mcpField
T
typescript-patterns

typescript-patterns

github.com/oakoss開発20184 回インストール10 週間前に更新
リポジトリ

typescript-patterns について

strict モードを使う TypeScript 開発者向けのパターン集です。型システムを使った安全な API、データ変換、ライブラリ開発を扱い、入門解説は対象外です。

主な機能

  1. 01ユーティリティ型とマップ型
  2. 02ジェネリック制約と型推論
  3. 03型ガードと型の絞り込み
  4. 04判別可能なユニオンと網羅性検査
  5. 05strict モードと現代的な型のイディオム

活用シーン

  1. 01型安全な API の設計
  2. 02型を使った複雑なデータ変換
  3. 03TypeScript ライブラリの開発

インストール

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

$npx skills add https://github.com/oakoss/agent-skills --skill typescript-patterns

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
conditional-types.md
discriminated-unions.md
generics.md
mapped-types.md
modern-idioms.md
module-patterns.md
strict-mode.md
type-guards.md
type-utilities.md

詳細

TypeScript のパターン

概要

型システムを使って実行時エラーを防ぐ、高度な TypeScript のパターンです。型推論、型の絞り込み、コンパイル時の検証を行う、strict モードの TypeScript に焦点を当てています。初心者向けのチュートリアルではありません。

使用する場面: 型安全な API の構築、複雑なデータ変換、ライブラリの作成、型による実行時エラーの防止、strict モードのフラグを使う場合。

使用しない場面: TypeScript の基本(プリミティブ型、インターフェース、クラス)の学習、JavaScript から TypeScript への移行ガイド、ツールのセットアップ、ビルド設定。

クイックリファレンス

パターンAPI主なポイント
ユーティリティ型Pick<T, K>, Omit<T, K>プロパティを抽出または除外します
Partial/RequiredPartial<T>, Required<T>プロパティを任意または必須にします
Record 型Record<K, V>キーが既知のオブジェクト
Awaited 型Awaited<T>Promise の戻り値の型を展開します
ReturnType/ParametersReturnType<F>, Parameters<F>関数の型を抽出します
ジェネリック制約<T extends Type>ジェネリックパラメーターを制約します
型推論type Inferred = typeof value値から TypeScript に推論させます
型ガードtypeof, instanceof, in実行時に型を絞り込みます
カスタム型ガード(x): x is Typeユーザー定義の型絞り込み関数
推論される型述語(x) => x !== null型述語を自動推論するフィルター
判別可能なユニオンリテラル型の type プロパティを持つユニオン網羅的なパターンマッチング
条件型T extends U ? X : Y型レベルの条件分岐
マップ型{ [K in keyof T]: T[K] }すべてのプロパティを変換します
テンプレートリテラル`${A}-${B}`文字列リテラル型を操作します
const アサーションas const最も狭いリテラル型
satisfies 演算子value satisfies Type型を拡大せずに型チェックします
NoInfer ユーティリティNoInfer<T>ある位置からの推論を防ぎます
const 型パラメーター<const T extends Type>as const を使わずに推論を狭めます
インライン型インポートimport { type User }型を明示的にインポートします
モジュール拡張declare module 'lib' { ... }サードパーティの型を拡張します
アサーション関数function assert(x): asserts x is T型ガードに失敗した場合に例外をスローします

よくある間違い

間違い正しいパターン
正当な理由なく any を使うunknown を使い、型ガードで絞り込みます
あちこちで手動の型アサーションを行う型推論に任せ、関数の戻り値に型を指定します
型の絞り込み前に分割代入する判別可能なユニオンではオブジェクトをそのまま使います
undefined を確認せずにインデックスアクセスするnoUncheckedIndexedAccess を有効にします
安全でない値を as Type でキャストする絞り込まれた型を維持するために satisfies Type を使います
ジェネリクス内にオブジェクトをインラインで記述するconst または型エイリアスに切り出します
制約で extends を省略する可能な場合は常にジェネリクスに制約を設定します
Parameters<typeof fn>[0] を使う関数のパラメーターに直接型を指定します
ユニオンの網羅性を処理しないswitch/if-else で never チェックを使います
value as const satisfies Type を使うsatisfies Type を使い、必要であればその後に as const を使います

委任

  • パターンの調査:Explore エージェントを使って、コードベース内の既存パターンを見つけます
  • 型エラーのデバッグ:複数ステップにわたる型の解決には Task エージェントを使います
  • コードレビュー:型安全性の監査を code-reviewer スキルに委任します

参考資料

コメント