ts-best-practices について
TypeScript を書く、またはレビューする開発者向けの規約スキルです。より安全な型設計、データ検証、すべての分岐を処理するためのルールを示します。
主な機能
- 01安全でない型アサーションの回避
- 02any より unknown を優先
- 03判別可能なユニオンで変種を表現
- 04検証済みの型ガードと型の絞り込み
- 05switch の網羅性チェック
活用シーン
- 01TypeScript の危険な型アサーションをレビュー
- 02境界で外部データを検証
- 03複数の形を持つデータの型を定義
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ poteto/ noodle --skill ts-best-practicesインストール後、Claude Code で/ts-best-practicesを入力して読み込まれたか確認します。
同梱ファイルreferences/patterns.md
詳細
型安全性
このプロジェクトの TypeScript ポリシーです。TypeScript を記述またはレビューする際に適用してください。
| ルール | 概要 |
|---|---|
as キャストは禁止 | すべての as は実行時クラッシュにつながる可能性があります。境界で検証し、根拠がある場合にのみキャストしてください。手動検証より Zod/Valibot を優先してください。 |
any より unknown | any は、使われる箇所すべてで型チェックを無効にします。外部データは常に unknown としてください。 |
| 判別可能なユニオン | 共通のリテラル判別子を使ってバリアントをモデル化してください。省略可能なフィールドを詰め込んだ型は使わないでください。 |
| 型の絞り込みの優先順位 | 次の順に優先してください:判別可能なユニオンの switch > in 演算子 > typeof/instanceof > 型ガード > as |
| 型ガード | 主張を実際に検証する必要があります。名前は isX または hasX にしてください。可能な場合は判別子による絞り込みを優先してください。 |
| 網羅性チェック | 判別可能なユニオンに対する switch には、必ず default: never の分岐を追加してください。定型コードを減らすには absurd() ヘルパーを使ってください。 |
as より satisfies | 型を拡大せずに値が型に一致することを確認する場合は、リテラル型を保持するために satisfies を使ってください。 |
| 不可能な状態 | バグの調査で「この組み合わせは起こり得るか?」と確認する必要があるなら、型が緩すぎます。より厳密にしてください。 |
各ルールのコード例については、references/patterns.md を参照してください。
コメント
Markdown 対応