Skip to content

Commit 7b41c86

Browse files
shinprclaude
andcommitted
refactor: TypeScriptルールの明確化によるAI実行精度向上
AIの実行精度最大化のため、最小限の記述で最大の効果を得られるよう以下を改善: 1. 型ガードの実装パターンを追加 - unknown型の具体的な使用方法を明示 - 外部入力の安全な検証方法を例示 2. クラス使用の判断基準を明確化 - 「データが振る舞いを持つか」という具体的な判断基準を追加 - 状態管理が必要なケース(ShoppingCart、Session等)を明示 3. 型の複雑性管理に外部API例外を追加 - 外部API型は20フィールド制限の例外とすることを明記 - 内部では適切に変換することで境界を明確化 これらの改善により、AIが迷わず正確な実装判断ができるようになり、 同時に保守性も向上する。 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
1 parent 16c7a13 commit 7b41c86

File tree

1 file changed

+16
-2
lines changed

1 file changed

+16
-2
lines changed

docs/rules-ja/typescript.md

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,16 @@
2121
3. **ユニオン型・インターセクション型**: 複数の型の組み合わせ
2222
4. **型アサーション(最終手段)**: 型が確実な場合のみ
2323

24+
**型ガードの実装パターン**
25+
```typescript
26+
// 外部入力を安全に検証
27+
function isUser(value: unknown): value is User {
28+
return typeof value === 'object' && value !== null &&
29+
'id' in value && 'name' in value
30+
}
31+
// 使用例: if (isUser(data)) { /* dataはUser型 */ }
32+
```
33+
2434
**モダンな型機能の活用**
2535
- **satisfies演算子**: 型推論を維持しつつ型チェック
2636
```typescript
@@ -54,18 +64,22 @@
5464
入力層(`unknown`) → 型ガード → ビジネス層(型保証) → 出力層(シリアライズ)
5565
5666
**型の複雑性管理**
57-
- フィールド数: 20個まで(超えたら責務で分割)
67+
- フィールド数: 20個まで(超えたら責務で分割、外部API型は例外
5868
- オプショナル率: 30%まで(超えたら必須/任意で分離)
5969
- ネスト深さ: 3階層まで(超えたらフラット化)
6070
- 型アサーション: 3回以上使用したら設計見直し
71+
- **外部API型の扱い**: 制約を緩和し、実態に合わせて定義(内部では適切に変換)
6172
6273
## コーディング規約
6374
6475
**クラス使用の判断基準**
76+
- **推奨:関数とinterfaceでの実装**
77+
- 背景: テスタビリティと関数合成の柔軟性が向上
6578
- **クラス使用を許可**:
6679
- フレームワーク要求時(NestJSのController/Service、TypeORMのEntity等)
6780
- カスタムエラークラス定義時
68-
- **クラス使用を禁止**: 上記以外は関数とinterfaceで実装
81+
- 状態とビジネスロジックが密結合している場合(例: ShoppingCart、Session、StateMachine)
82+
- **判断基準**: 「このデータは振る舞いを持つか?」がYesならクラス検討
6983
```typescript
7084
// ✅ 関数とinterface
7185
interface UserService { create(data: UserData): User }

0 commit comments

Comments
 (0)