typescript-advanced-patterns について
高度な型レベルプログラミング、ライブラリAPI、実装パターンを扱うTypeScript 5.x向けのスキルです。DSLや型付きワークフロー、ライブラリを構築する開発者を対象に、最新機能や宣言の仕組みも解説します。
主な機能
- 015カテゴリにわたる40のルール
- 02フルーエントビルダーと型付きDSLのパターン
- 03再帰条件型とタプルの手法
- 04TypeScript 5.xの高度な機能
- 05型によるワークフローと状態のモデル化
- 06宣言ファイルとモジュールシステムの指針
活用シーン
- 01型付き公開ライブラリAPIの設計
- 02型レベル変換とテストの実装
- 03型でワークフローの状態と遷移を表現
- 04JavaScriptまたはTypeScriptライブラリ向け型の公開
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill typescript-advanced-patternsインストール後、Claude Code で/typescript-advanced-patternsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
AGENTS.mdmetadata.jsonassets/templates/_template.mdreferences/_sections.mddecl-ambient-asset-modules.mddecl-authoring-d-ts-for-js.mddecl-declaration-merging.mddecl-exports-and-types-versions.mddecl-global-augmentation-discipline.mddecl-module-augmentation.mddsl-fluent-builder-phantom-state.mddsl-narrow-api-surface.mddsl-overloads-vs-conditional-returns.mddsl-route-param-inference.mddsl-schema-first-inference.mddsl-type-safe-object-paths.mddsl-type-safe-query-builder.mddsl-typed-event-emitter.mdimpl-assert-never-exhaustive.mdimpl-env-config-loader.mdimpl-finite-state-machine.mdimpl-phantom-feature-flags.mdimpl-schema-derived-api-client.mdimpl-state-discriminated-union.mdimpl-tagged-result-type.mdimpl-type-safe-form-builder.mdmod-const-type-params-overloads.mdmod-method-vs-property-bivariance.mdmod-noinfer-overload-disambiguation.mdmod-phantom-capability-tracking.md詳細
TypeScript の高度なパターンに関するベストプラクティス
TypeScript 5.x を表面的に使う範囲を超えた、型レベルプログラミング、ライブラリ作成者向けのイディオム、機能実装パターンです。コンシューマーのコードベースへの影響度に基づいて優先順位を付けた、5 カテゴリー・40 のルールを収録しています。
適用する場面
次のような場合に、これらのガイドラインを参照してください。
- 公開ライブラリや DSL のインターフェースを設計するとき(流れるように呼び出せるビルダー、イベントエミッター、ルートパーサー、クエリビルダー、スキーマから導出されるクライアントなど)
- 型レベルのアルゴリズムを記述するとき(再帰的な条件型、アキュムレーターパターン、キーの再マッピング、可変長タプル、型レベルの文字列・数値演算、型レベルのテストなど)
- TS 5.x の機能を複雑な形で使用するとき(Stage 3 デコレーター、
usingの合成、オーバーロードの曖昧さを解消するconst T、アンカー用パラメーターと制約付きパラメーターを分けるNoInfer、分散アノテーション、双変性の抜け穴など) - 型レベルでワークフローの状態、遷移、機能を表現し、不正な状態やチェック漏れをコンパイルエラーにするとき
- 宣言・モジュールシステムと統合するとき(モジュール拡張、宣言のマージ、アンビエントなアセットモジュール、
exports/typesVersionsによるライブラリ型の公開など)
隣接するスキルとの境界
| スキル | 次のことが必要な場合は、このスキルを使用しないでください… |
|---|---|
typescript(厳選) | コンパイラーのパフォーマンス/tsconfig の調整 |
typescript-refactor | 一般的なリファクタリングパターンや最新の TS の基本 |
ts-google | Google スタイルのコードスタイルに関する判断 |
clean-code-ts-react | クリーンコードの原則(命名、関数の形、抽象化) |
effect-ts / opencode-ts | Effect ライブラリ固有のパターン |
このスキルのルールが typescript-refactor または .curated/typescript のルールと重複する場合、「Scope delta」セクションで、このスキルがより基本的なバージョンに加える内容を説明しています。
優先度別のルールカテゴリー
| 優先度 | カテゴリー | 影響度 | 接頭辞 | ルール数 |
|---|---|---|---|---|
| 1 | ライブラリ作成者向け/DSL パターン | CRITICAL | dsl- | 8 |
| 2 | 型レベルプログラミング | HIGH | tlp- | 10 |
| 3 | 最新機能の深掘り | HIGH | mod- | 8 |
| 4 | 機能実装パターン | MEDIUM-HIGH | impl- | 8 |
| 5 | 宣言・モジュールシステム | MEDIUM | decl- | 6 |
クイックリファレンス
1. ライブラリ作成者向け/DSL パターン(CRITICAL)
dsl-fluent-builder-phantom-state— ファントム状態型でビルダーの呼び出し順序を強制するdsl-typed-event-emitter— マップ型のイベントマップで型付きイベントエミッターを構築するdsl-type-safe-object-paths— ドット記法による推論でオブジェクトパスへのアクセスに型を付けるdsl-route-param-inference— パスパターンからルートパラメーターを推論するdsl-schema-first-inference— 実行時スキーマから静的型を導出するdsl-type-safe-query-builder— ビルダーの戻り値の型にクエリの形状を符号化するdsl-narrow-api-surface— 内部ヘルパーではなく API のみを公開するdsl-overloads-vs-conditional-returns— 条件付き戻り値型よりオーバーロードを選ぶ
2. 型レベルプログラミング(高)
tlp-recursive-conditional-types— 再帰的な条件型を使って構造を変換しますtlp-tail-recursion-accumulator— 末尾再帰アキュムレーターパターンを使い、50 ステップの制限を回避しますtlp-infer-extends-constraints—inferをextendsで制約し、検証済みの抽出を行いますtlp-key-remapping-as— マップ型のas句でキーを再マッピングしますtlp-variadic-tuple-types— 可変長タプルを使い、位置を考慮した型アルゴリズムを実装しますtlp-type-level-string-algorithms— 再帰的なテンプレートリテラルで型レベルの文字列アルゴリズムを構築しますtlp-distributive-conditional-control—[T] extends [U]のタプルトリックで分配を制御しますtlp-type-level-tests—Equal、Expect、@ts-expect-errorで型をテストしますtlp-template-literal-pattern-matching— テンプレートリテラル内のinferで構造化文字列を照合しますtlp-hkt-emulation— インターフェースディクショナリーで高カインド型をエミュレートします
3. 最新機能を深く掘り下げる(高)
mod-stage-3-decorators— メタプログラミングにデコレーターコンテキストを使って Stage 3 デコレーターを使用しますmod-using-disposal-ordering—usingリソースを明示的な破棄順序で組み合わせますmod-const-type-params-overloads—const Tを使い、オーバーロードされた API でリテラルを保持しますmod-noinfer-overload-disambiguation—NoInfer<T>を使い、オーバーロードされた関数シグネチャを区別しますmod-variance-debugging—in/outアノテーションで変性エラーをデバッグしますmod-method-vs-property-bivariance— 双変性の穴を避けるため、メソッド構文よりプロパティ構文を優先しますmod-phantom-capability-tracking— ファントムブランドで型レベルの機能を追跡しますmod-satisfies-branded-config—satisfiesとブランド型を組み合わせ、設定を検証します
4. 機能実装パターン(中〜高)
impl-tagged-result-type— 操作の結果をOk<T> | Err<E>のタグ付きユニオンとしてモデル化しますimpl-state-discriminated-union— ワークフローの状態を、状態レコードの判別ユニオンとしてモデル化しますimpl-finite-state-machine— 関数シグネチャで FSM の遷移を表現しますimpl-schema-derived-api-client— エンドポイントスキーマからクライアントの引数型と戻り値型を導出しますimpl-type-safe-form-builder— 単一のスキーマ定義を基にフォームフィールドの型推論を行いますimpl-phantom-feature-flags— ファントム機能型で機能に依存するコードを制御しますimpl-assert-never-exhaustive—assertNeverを使い、ユニオンの各バリアントを漏れなく処理するよう強制しますimpl-env-config-loader— スキーマ推論を使い、境界で環境設定を検証します
5. 宣言とモジュールシステム(中)
decl-module-augmentation— ソースを変更せずにサードパーティモジュールの型を拡張しますdecl-declaration-merging— インターフェース、名前空間、クラスの宣言を統合して API を拡張しますdecl-ambient-asset-modules— TypeScript 以外のアセットをインポートするためのアンビエントモジュールを宣言しますdecl-global-augmentation-discipline— グローバル型の拡張範囲を制限し、競合を防ぎますdecl-exports-and-types-versions—exportsおよびtypesVersionsマップを使ってライブラリの型を配布しますdecl-authoring-d-ts-for-js— プレーンな JavaScript ライブラリ向けの.d.tsファイルを作成します
使用方法
詳しい説明、コード例、「適用すべきでない場合」のガイダンスについては、個々のリファレンスファイルをお読みください。
- セクションの定義 — カテゴリの構成と影響度
- ルールのテンプレート — 新しいルールを追加するためのテンプレート
ルール間は [[other-rule-slug]] で相互リンクされています。関連するパターンが参照されている場合は、そのリンクをたどってください。
リファレンスファイル
| ファイル | 説明 |
|---|---|
| references/_sections.md | カテゴリの定義と順序 |
| assets/templates/_template.md | 新しいルール用のテンプレート |
| metadata.json | バージョンとリファレンス情報 |
コメント
Markdown 対応