typescript-magician について
型エラーや複雑な型の課題に取り組む開発者向けの TypeScript スキルです。精密で型安全な修正を重視し、tsc で検証します。
主な機能
- 01高度なジェネリクスと型推論
- 02条件型とマップ型
- 03型の絞り込みとユーティリティ型
- 04ブランド型とモジュール拡張
- 05変更前後のコンパイルチェック
- 06型テストと IntelliSense の指針
活用シーン
- 01TypeScript コンパイラーエラーの診断
- 02any を精密な型に置き換え
- 03複雑なジェネリクス推論の解決
- 04コードベースへの厳密な型の導入
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ mcollina/ skills --skill typescript-magicianインストール後、Claude Code で/typescript-magicianを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
tile.jsonrules/array-index-access.mdas-const-typeof.mdbuilder-pattern.mdconditional-types.mddeep-inference.mderror-diagnosis.mdfunction-overloads.mdgenerics-basics.mdinfer-keyword.mdmapped-types.mdopaque-types.mdtemplate-literal-types.mdtype-narrowing.mdutility-types.md詳細
使用する場面
このスキルは、次のような場合に使用します。
- TypeScript のエラーや型に関する課題
- コードベースからの
any型の排除 - 複雑なジェネリクスや型推論の問題
- 厳密な型付けが必要な場合
手順
呼び出されたときは、次の手順に従います。
- 変更を加える前に
tsc --noEmitを実行し、エラー出力全体を取得します - 型の問題の根本原因(不健全な推論、制約の不足、暗黙の
anyなど)を特定します - TypeScript の高度な機能を使って、正確で型安全な解決策を作成します
- 適切な型付けですべての
any型を排除します。置き換えた型が呼び出し箇所でも引き続き要件を満たすことを検証します - 2 回目の
tsc --noEmitを実行し、エラーなくコンパイルできることを確認します
対応できる内容:
- 高度なジェネリクスと条件型
- テンプレートリテラル型とマップ型
- ユーティリティ型と型操作
- ブランド型と公称型付け
- 複雑な推論パターン
- 変性と分配のルール
- モジュール拡張と宣言のマージ
TypeScript の課題ごとに、次の内容を提供します。
- 問題の背景にある型理論の説明
- 該当する場合は、複数の解決方法
- 変更前と変更後の型表現
- 包括的な型テスト
- 完全な IntelliSense サポート
簡単な例
ジェネリクスによる any の排除
変更前
function getProperty(obj: any, key: string): any {
return obj[key];
}
変更後
function getProperty<T, K extends keyof T>(obj: T, key: K): T[K] {
return obj[key];
}
// getProperty({ name: "Alice" }, "name") → inferred as string ✓
不明な API レスポンスの型の絞り込み
変更前
async function fetchUser(): Promise<any> {
const res = await fetch("/api/user");
return res.json();
}
変更後
interface User { id: number; name: string }
function isUser(value: unknown): value is User {
return (
typeof value === "object" &&
value !== null &&
"id" in value &&
"name" in value
);
}
async function fetchUser(): Promise<User> {
const res = await fetch("/api/user");
const data: unknown = await res.json();
if (!isUser(data)) throw new Error("Invalid user shape");
return data;
}
リファレンス
詳細な説明とコード例については、個別のルールファイルを参照してください。
基本パターン
- rules/as-const-typeof.md -
as constとtypeofを使って実行時の値から型を導出する - rules/array-index-access.md -
[number]インデックスを使って配列要素の型にアクセスする - rules/utility-types.md - 組み込みユーティリティ型:Parameters、ReturnType、Awaited、Omit、Partial、Record
高度なジェネリクス
- rules/generics-basics.md - ジェネリック型、制約、推論の基礎
- rules/builder-pattern.md - メソッドをチェーンできる型安全なビルダーパターン
- rules/deep-inference.md - F.Narrow と const 型パラメーターを使った深い型推論の実現
型レベルプログラミング
- rules/conditional-types.md - 型レベルの if/else ロジックに使う条件型
- rules/infer-keyword.md -
inferを使って条件型内から型を抽出する - rules/template-literal-types.md - 型レベルでの文字列操作
- rules/mapped-types.md - 既存の型プロパティを変換して新しい型を作成する
型安全性のパターン
- rules/opaque-types.md - 型安全な識別子のためのブランド型と不透明型
- rules/type-narrowing.md - 制御フロー解析による型の絞り込み
- rules/function-overloads.md - 複雑な関数シグネチャに関数オーバーロードを使用する
デバッグ
- rules/error-diagnosis.md - TypeScript の型エラーを診断し、理解するための方法
コメント
Markdown 対応