typescript-refactor について
AI エージェント向けの TypeScript と TSX のリファクタリングガイドです。型安全性、React、コンパイラー性能、エラー処理を優先度別に扱います。
主な機能
- 019カテゴリにわたる優先度付き47ルール
- 02型の絞り込みと型アーキテクチャの指針
- 03最新の TypeScript と React/TSX のパターン
- 04コンパイラー性能とエラー安全性の指針
活用シーン
- 01TypeScript の安全でない型アサーションの確認
- 02React コンポーネントやフックのリファクタリング
- 03アプリケーションコードの型設計
- 04大規模コードベースのコンパイル改善
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill typescript-refactorインストール後、Claude Code で/typescript-refactorを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
AGENTS.mdmetadata.jsonassets/templates/_template.mdreferences/_sections.mdarch-avoid-partial-abuse.mdarch-branded-types.mdarch-const-assertion.mdarch-discriminated-unions.mdarch-interfaces-over-intersections.mdarch-readonly-by-default.mdarch-satisfies-over-annotation.mdcompile-avoid-deep-recursion.mdcompile-base-types-over-unions.mdcompile-explicit-return-types.mdcompile-isolated-declarations.mdcompile-project-references.mderror-discriminated-error-unions.mderror-exhaustive-error-handling.mderror-result-type.mderror-typed-catch.mdgeneric-avoid-distributive-surprises.mdgeneric-constrain-dont-overconstrain.mdgeneric-mapped-type-utilities.mdgeneric-return-type-inference.mdmodern-const-type-parameters.mdmodern-erasable-syntax.mdmodern-import-attributes.mdmodern-noinfer-utility.mdmodern-template-literal-types.mdmodern-using-keyword.md詳細
TypeScript リファクタリングのベストプラクティス
AI エージェントと LLM 向けに設計された、TypeScript および TSX の包括的なリファクタリングとモダナイズのガイドです。影響度に基づいて優先順位付けされた 9 カテゴリ、47 のルールを収録し、自動リファクタリング、コードレビュー、コード生成を支援します。TypeScript 6.0 と React 19 に対応しています。
適用する場面
次のような場合に、このガイドラインを参照してください。
- 型安全性と保守性を高めるために、TypeScript または React/TSX コードをリファクタリングする
- 型アーキテクチャ(判別可能なユニオン、ブランド型、ジェネリクス)を設計する
- 危険な
asキャストをなくすために型を絞り込む .tsxファイルで React コンポーネントやフック(props、refs、events、state)に型を付ける- 最新の TypeScript 5.x~6.0 の機能(
satisfies、using、const 型パラメーター、推論される型述語、消去可能な構文、withインポート属性)を導入する - 大規模なコードベースでコンパイラーのパフォーマンスを最適化する(
isolatedDeclarations、プロジェクト参照) - 型安全なエラー処理パターンを実装する
- TypeScript 固有の挙動や落とし穴についてコードをレビューする
優先度別のルールカテゴリ
| 優先度 | カテゴリ | 影響度 | プレフィックス |
|---|---|---|---|
| 1 | 型アーキテクチャ | CRITICAL | arch- |
| 2 | 型の絞り込みとガード | CRITICAL | narrow- |
| 3 | 最新の TypeScript | HIGH | modern- |
| 4 | React と TSX | HIGH | tsx- |
| 5 | ジェネリックパターン | HIGH | generic- |
| 6 | コンパイラーのパフォーマンス | MEDIUM-HIGH | compile- |
| 7 | エラー安全性 | MEDIUM | error- |
| 8 | ランタイムパターン | MEDIUM | perf- |
| 9 | 特有の挙動と落とし穴 | LOW-MEDIUM | quirk- |
クイックリファレンス
1. 型アーキテクチャ(CRITICAL)
arch-discriminated-unions— 網羅的なパターンマッチングには、文字列列挙型より判別可能なユニオンを使用するarch-branded-types— 値の取り違えを防ぐため、ドメイン識別子にはブランド型を使用するarch-satisfies-over-annotation— リテラル型を保持するため、設定オブジェクトにはsatisfiesを使用するarch-interfaces-over-intersections— より分かりやすいエラーメッセージを得るため、型を交差させるのではなくインターフェイスを拡張するarch-const-assertion— 不変のリテラル推論にはas constを使用するarch-readonly-by-default— 関数のパラメーターと戻り値には、デフォルトで readonly 型を使用するarch-avoid-partial-abuse— ビルダーパターンでのPartial<T>の乱用を避ける
2. 型の絞り込みとガード(CRITICAL)
narrow-custom-type-guards—asを実行時チェック付きのガードに置き換える。TS 5.5 以降では述語が推論されるnarrow-assertion-functions— 前提条件のチェックにはアサーション関数を使用するnarrow-exhaustive-switch—neverを使って switch の網羅性を保証するnarrow-in-operator— インターフェイスのユニオン型をin演算子で絞り込むnarrow-eliminate-as-casts— 適切な絞り込みの連鎖でasキャストをなくす
3. モダンな TypeScript(HIGH)
modern-using-keyword— リソースのクリーンアップにはusingキーワードを使用しますmodern-const-type-parameters— リテラル型の推論には const 型パラメーターを使用しますmodern-template-literal-types— 文字列パターンにはテンプレートリテラル型を使用しますmodern-noinfer-utility— 型パラメーターの推論を制御するにはNoInferを使用しますmodern-verbatim-module-syntax— インポート型を明示するにはverbatimModuleSyntaxを有効にしますmodern-erasable-syntax— 型のストリッピングには、enum や namespace より消去可能な構文を優先しますmodern-import-attributes— 非推奨のassertの代わりにwithインポート属性を使用します
4. React と TSX(HIGH)
tsx-avoid-react-fc—React.FCの代わりに props を直接型付けしますtsx-ref-as-prop—forwardRefの代わりにrefを prop として渡します(React 19)tsx-extend-native-props— ネイティブ要素の props を再宣言する代わりに、ComponentPropsWithRefで拡張しますtsx-discriminated-props— 相互に排他的な props は判別可能なユニオンとしてモデル化しますtsx-event-handler-types— React の合成イベント型でイベントハンドラーを型付けしますtsx-hook-typing— nullable な状態や変更可能な状態に合わせてuseState/useRefを型付けします
5. ジェネリックのパターン(HIGH)
generic-constrain-dont-overconstrain— ジェネリックの制約は必要最小限にしますgeneric-avoid-distributive-surprises— 分配条件型を制御しますgeneric-mapped-type-utilities— 繰り返し行う変換にはカスタムのマップ型を構築しますgeneric-return-type-inference— ジェネリック関数の戻り値型の推論を維持します
6. コンパイラーのパフォーマンス(MEDIUM-HIGH)
compile-explicit-return-types— エクスポートする関数には明示的な戻り値型を追加しますcompile-avoid-deep-recursion— 深く再帰する型定義を避けますcompile-project-references— モノレポのビルドにはプロジェクト参照を使用しますcompile-base-types-over-unions— 大規模なユニオン型の代わりに基本型を使用しますcompile-isolated-declarations— 宣言ファイルの並列出力にはisolatedDeclarationsを有効にします
7. エラー安全性(MEDIUM)
error-result-type— スローされる例外の代わりに Result 型を使用しますerror-exhaustive-error-handling— 型付けされたエラーのバリアントには網羅性チェックを使用しますerror-typed-catch— catch 節の変数をunknownとして型付けしますerror-discriminated-error-unions— ドメインエラーを判別可能なユニオンとしてモデル化します
8. ランタイムパターン(中)
perf-union-literals-over-enums— 列挙型ではなくユニオンリテラルを使用します — 列挙型は消去できませんperf-avoid-delete-operator— オブジェクトに対するdelete演算子の使用を避けますperf-object-freeze-const— 真の不変性を実現するには、as constとともにObject.freezeを使用しますperf-object-keys-narrowing—Object.keysによる型の拡大を避けますperf-map-set-over-object— 動的なコレクションにはプレーンオブジェクトではなくMapとSetを使用します
9. 特有の挙動と落とし穴(低〜中)
quirk-excess-property-checks— オブジェクトリテラルに対する余剰プロパティチェックについて理解しますquirk-empty-object-type—{}型の使用を避けます — この型は nullish ではない値を意味しますquirk-structural-typing-escapes— 構造的型付けの抜け道に注意しますquirk-variance-annotations— ジェネリックの意図を文書化するために分散注釈を使用します(速度向上のためではありません)
使用方法
詳しい説明とコード例については、個々のリファレンスファイルをお読みください。
- セクション定義 — カテゴリーの構成と影響レベル
- ルールのテンプレート — 新しいルールを追加するためのテンプレート
リファレンスファイル
| ファイル | 説明 |
|---|---|
| references/_sections.md | カテゴリーの定義と順序 |
| assets/templates/_template.md | 新しいルール用のテンプレート |
| metadata.json | バージョンとリファレンス情報 |
コメント
Markdown 対応