typescript について
TypeScript アプリの設定、型設計、性能改善に取り組む開発者向けのプラクティス集です。影響度順の42ルールを8カテゴリに分け、コンパイラーや非同期処理、モジュール構成などを扱います。
主な機能
- 018カテゴリ、42ルール
- 02影響度に基づく優先順位
- 03型システムの性能指針
- 04コンパイラーと非同期処理の推奨事項
- 05型安全性とメモリ管理の実践
活用シーン
- 01tsconfig.json の設定
- 02複雑な型やジェネリクスの設計
- 03非同期データ取得の最適化
- 04コンパイルと実行時性能のレビュー
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ thongdn-it/ react-agent-skills --skill typescriptインストール後、Claude Code で/typescriptを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/advanced-branded-types.mdadvanced-satisfies-operator.mdadvanced-template-literal-types.mdasync-avoid-loop-await.mdasync-avoid-unnecessary-async.mdasync-defer-await.mdasync-explicit-return-types.mdasync-parallel-promises.mdmem-avoid-closure-leaks.mdmem-avoid-global-state.mdmem-cleanup-event-listeners.mdmem-clear-timers.mdmem-use-weakmap-for-metadata.mdmodule-avoid-barrel-imports.mdmodule-avoid-circular-dependencies.mdmodule-control-types-inclusion.mdmodule-dynamic-imports.mdmodule-use-type-imports.mdruntime-avoid-object-spread-in-loops.mdruntime-cache-property-access.mdruntime-prefer-array-methods.mdruntime-use-for-of-for-iteration.mdruntime-use-set-for-lookups.mdruntime-use-string-methods.mdsafety-assertion-functions.mdsafety-const-assertions.mdsafety-exhaustive-checks.mdsafety-prefer-unknown-over-any.mdsafety-strict-null-checks.mdsafety-use-type-guards.md詳細
TypeScript のベストプラクティス
TypeScript アプリケーションの包括的なパフォーマンス最適化ガイドです。8 つのカテゴリにわたる 42 のルールを収録し、自動リファクタリングとコード生成の指針となるよう、影響度の高い順に優先順位を付けています。
適用するタイミング
以下の場合に、このガイドラインを参照してください。
- 新規または既存のプロジェクトで tsconfig.json を設定する場合
- 複雑な型定義やジェネリクスを記述する場合
- async/await パターンやデータ取得を最適化する場合
- モジュールを整理し、インポートを管理する場合
- コンパイルまたは実行時のパフォーマンスについてコードをレビューする場合
優先度別のルールカテゴリ
| 優先度 | カテゴリ | 影響度 | プレフィックス |
|---|---|---|---|
| 1 | 型システムのパフォーマンス | 重大 | type- |
| 2 | コンパイラー設定 | 重大 | tscfg- |
| 3 | 非同期パターン | 高 | async- |
| 4 | モジュール構成 | 高 | module- |
| 5 | 型安全性のパターン | 中〜高 | safety- |
| 6 | メモリ管理 | 中 | mem- |
| 7 | 実行時の最適化 | 低〜中 | runtime- |
| 8 | 高度なパターン | 低 | advanced- |
目次
- 型システムのパフォーマンス — CRITICAL
- 1.1 エクスポートする関数に明示的な戻り値の型を追加する — CRITICAL(宣言ファイルの出力が30〜50%高速化)
- 1.2 深くネストしたジェネリック型を避ける — CRITICAL(インスタンス化コストの指数的な増加を防止)
- 1.3 大規模なユニオン型を避ける — CRITICAL(二次的なO(n²)の比較コストを回避)
- 1.4 条件型を名前付きエイリアスに抽出する — CRITICAL(コンパイラーのキャッシュを有効にし、再評価を防止)
- 1.5 型の再帰の深さを制限する — CRITICAL(型展開の指数的な増加を防止)
- 1.6 型の交差よりインターフェイスを優先する — CRITICAL(型の解決が2〜5倍高速化)
- 1.7 複雑なマップ型を簡素化する — CRITICAL(型の計算を50〜80%削減)
- コンパイラーの設定 — CRITICAL
- 2.1 includeとexcludeを適切に設定する — CRITICAL(不要なファイル数千個のスキャンを防止)
- 2.2 インクリメンタルコンパイルを有効にする — CRITICAL(再ビルドが50〜90%高速化)
- 2.3 ビルドを高速化するためskipLibCheckを有効にする — CRITICAL(コンパイルが20〜40%高速化)
- 2.4 分散チェックを高速化するためstrictFunctionTypesを有効にする — CRITICAL(最適化された分散チェックが可能)
- 2.5 単一ファイルの変換にisolatedModulesを使用する — CRITICAL(バンドラーでの変換が80〜90%高速化)
- 2.6 大規模なコードベースでプロジェクト参照を使用する — CRITICAL(インクリメンタルビルドが60〜80%高速化)
- 非同期パターン — HIGH
- 3.1 非同期関数の戻り値の型を注釈する — HIGH(実行時エラーを防ぎ、型推論を改善)
- 3.2 ループ内でawaitを避ける — HIGH(N回の反復でN倍高速化、ユーザー10人なら10倍改善)
- 3.3 不要なasync/awaitを避ける — HIGH(マイクロタスクキューのオーバーヘッドを解消)
- 3.4 値が必要になるまでawaitを遅らせる — HIGH(暗黙的な並列化が可能)
- 3.5 独立した処理にPromise.allを使用する — HIGH(I/Oバウンドのコードで2〜10倍改善)
- モジュール構成 — HIGH
- 4.1 バレルファイルからのインポートを避ける — HIGH(インポートに200〜800ミリ秒かかり、バンドルが30〜50%大きくなる)
- 4.2 循環依存を避ける — HIGH(実行時のundefinedエラーとコンパイルの遅延を防止)
- 4.3 @typesパッケージの読み込みを制御する — HIGH(型の競合を防ぎ、メモリ使用量を削減)
- 4.4 大規模なモジュールに動的インポートを使用する — HIGH(初期バンドルを30〜70%削減)
- 4.5 型に型専用インポートを使用する — HIGH(型情報の実行時インポートを解消)
- 型安全性のパターン — MEDIUM-HIGH
- 5.1 strictNullChecksを有効にする — MEDIUM-HIGH(null/undefinedによる実行時エラーを防止)
- 5.2 anyよりunknownを優先する — MEDIUM-HIGH(型の絞り込みを促し、実行時エラーを防止)
- 5.3 検証にアサーション関数を使用する — MEDIUM-HIGH(検証の定型コードを50〜70%削減)
- 5.4 リテラル型にconstアサーションを使用する — MEDIUM-HIGH(リテラル型を保持し、より適切な型推論を可能にする)
- 5.5 ユニオン型に網羅性チェックを使用する — MEDIUM-HIGH(コンパイル時に、ケースの見落としによるエラーを100%防止)
- 5.6 実行時の型チェックに型ガードを使用する — MEDIUM-HIGH(型アサーションを不要にし、境界でエラーを検出)
- メモリ管理 — MEDIUM
- 6.1 クロージャによるメモリーリークを避ける — MEDIUM(長期間存続するコールバック内での参照保持を防止)
- 6.2 グローバル状態の蓄積を避ける — MEDIUM(メモリーの際限ない増加を防止)
- 6.3 イベントリスナーをクリーンアップする — MEDIUM(メモリーの際限ない増加を防止)
- 6.4 タイマーとインターバルをクリアする — MEDIUM(コールバックの保持と繰り返し実行を防止)
- 6.5 オブジェクトのメタデータにWeakMapを使用する — MEDIUM(メモリーリークを防止し、自動クリーンアップを可能にする)
- 実行時の最適化 — LOW-MEDIUM
- 7.1 ホットループ内でオブジェクトスプレッドを避ける — LOW-MEDIUM(オブジェクトの割り当てをN倍削減)
- 7.2 ループ内でプロパティアクセスをキャッシュする — LOW-MEDIUM(プロパティの検索回数をN倍削減)
- 7.3 Lodashよりネイティブの配列メソッドを優先する — LOW-MEDIUM(ライブラリーのオーバーヘッドを解消し、ツリーシェイキングを可能にする)
- 7.4 単純な反復処理にfor-ofを使用する — LOW-MEDIUM(反復処理の定型コードを30〜50%削減)
- 7.5 最新の文字列メソッドを使用する — LOW-MEDIUM(単純なパターンでは正規表現より2〜5倍高速)
- 7.6 O(1)の検索にSet/Mapを使用する — LOW-MEDIUM(検索ごとの計算量をO(n)からO(1)に削減)
- 高度なパターン — LOW
- 8.1 型安全なIDにブランド型を使用する — LOW(互換性のないID型の混同を防止)
- 8.2 型検証と型推論にsatisfiesを使用する — LOW(プロパティアクセスエラーを防ぎ、オートコンプリートの精度を100%にする)
- 8.3 文字列パターンにテンプレートリテラル型を使用する — LOW(コンパイル時に文字列形式のエラーを100%防止)
References
コメント
Markdown 対応