mcpField
T
typescript-advanced-types

typescript-advanced-types

github.com/flpbalada開発835 回インストール1 日前に更新
リポジトリ

typescript-advanced-types について

高度な型を活用しながらコードの読みやすさを保つ、TypeScript 開発者向けのスキルです。ジェネリクス、条件型、型ガードを扱い、必要に応じて例を含むコンテキストファイルを参照できます。

主な機能

  1. 01信頼できない入力に unknown を使用
  2. 02ジェネリクスと条件型を活用
  3. 03マップ型でオブジェクトのプロパティを変換
  4. 04型ガードで型を絞り込む
  5. 05再利用可能な型ユーティリティをテスト

活用シーン

  1. 01関連する型間で再利用可能なロジックを型付け
  2. 02複数のバリエーションを持つデータをモデル化
  3. 03外部入力を検証して型を絞り込む
  4. 04型ユーティリティを作成してテスト

インストール

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

$npx skills add https://github.com/flpbalada/fb-skills --skill typescript-advanced-types

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

同梱ファイル

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

context/
core-examples.md
patterns.md
techniques.md

詳細

TypeScript の高度な型

目標

高度な型を使って安全性を高めつつ、コードを読みにくくしないようにします。 複雑さに見合う効果が得られるまでは、シンプルな型を優先します。

ルール

  • 信頼できない入力には、any ではなく unknown を使います。
  • シンプルな型は TypeScript に推論させます。
  • 型パラメーターは、複数の位置の型を関連付ける必要がある場合にのみ追加します。
  • バリエーションには、ユニオン型と判別可能なユニオン型を優先します。
  • オブジェクトの形状には interface を優先します。
  • ユニオン型、条件型、マップ型、エイリアスには type を使います。
  • 深くネストした条件型や再帰型は避けます。
  • プロジェクトが対応している場合は、再利用可能なユーティリティの型テストを追加します。

主なツール

  • ジェネリクス:関連する型全体でロジックを再利用します。
  • 条件型:型の条件に応じて型を選択します。
  • マップ型:オブジェクトのプロパティを変換します。
  • テンプレートリテラル型:文字列のパターンを制約します。
  • ユーティリティ型:Pick、Omit、Partial、Required、Readonly、Record を使います。
  • infer:配列、Promise、関数、オブジェクトから内部の型を抽出します。
  • 型ガード:実行時に unknown を絞り込みます。
  • アサーション関数:実行時の検証に失敗した場合に例外をスローします。
  • ブランド型:検証済みの文字列や ID を区別します。

ジェネリクスのルール

型パラメーターが一度しか登場しない場合は、おそらく不要です。

便利なパターン

type StrictOmit<T, K extends keyof T> = Omit<T, K>;
type ElementType<T> = T extends (infer U)[] ? U : never;
type UserId = string & { readonly __brand: "UserId" };
type User = z.infer<typeof userSchema>;

避けること

  • 近道として any を使うこと。
  • 型ガードが使える場合に、型アサーションを使うこと。
  • 意図を分かりにくくする、過度に凝った型。
  • 制約のないジェネリック型パラメーター。
  • スキーマや API 定義からすでに利用できる型を重複して定義すること。
  • コンパイラーの速度を低下させる再帰型。

段階的な情報開示

このスキルでは、コンテキストファイルを通じて詳細な例を提供します。必要に応じて読み込んでください。

コンテキストファイル読み込むタイミング
context/core-examples.mdジェネリクス、条件型、マップ型の例が必要なとき
context/patterns.mdEventEmitter、API クライアント、Builder などの実践的なパターンを実装するとき
context/techniques.md型推論、型ガード、アサーション、テストについて確認するとき

参考資料

出力

  • 型のアプローチ。
  • 最もシンプルな型の形状。
  • 必要に応じたジェネリック型の制約。
  • 入力が unknown の場合の実行時検証の境界。

コメント