← スキル一覧に戻る

enforcing-type-safety
by sumik5
⭐ 1🍴 0📅 2026年1月24日
SKILL.md
name: enforcing-type-safety description: Enforces type safety in TypeScript/Python implementations. Any/any types strictly prohibited. Use when processing API responses, integrating external libraries, or implementing data validation. Supports strict mode configuration and type guard implementation.
型安全性の原則
📑 目次
このスキルは以下のファイルで構成されています:
- SKILL.md (このファイル): 概要と基本原則
- TYPESCRIPT.md: TypeScript型安全性詳細
- PYTHON.md: Python型安全性詳細
- ANTI-PATTERNS.md: 避けるべきコード規則
- REFERENCE.md: チェックリスト、ツール設定、型チェッカー
🎯 使用タイミング
- すべてのコード実装時(必須)
- TypeScript/Python使用時
- APIレスポンス処理時
- 外部ライブラリ統合時
- レビュー時の品質確認
🚫 絶対禁止: any/Any型の基本原則
TypeScript
❌ 絶対禁止:
- any型の使用
- Function型(anyと同等)
- non-null assertion(!)の濫用
✅ 代替手段:
- 明示的な型定義(interface/type)
- unknown + 型ガード
- ジェネリクス
- Utility Types
Python
❌ 絶対禁止:
- Any型の使用
- bare except
- eval/exec
✅ 代替手段:
- 明示的な型ヒント
- TypedDict
- Protocol(構造的部分型)
- Union型
💡 型安全性の3つの柱
1. 明示的な型定義
すべての関数、変数に型を明示的に定義します。
TypeScript:
function getUserById(id: string): User | null {
// 実装
}
Python:
def get_user_by_id(user_id: str) -> Optional[User]:
# 実装
pass
2. 型ガードの活用
unknown型や不明な型は、型ガードで安全に処理します。
TypeScript:
function isUser(data: unknown): data is User {
return typeof data === 'object' &&
data !== null &&
'id' in data &&
'name' in data
}
if (isUser(data)) {
console.log(data.name) // 型安全
}
Python:
from typing import TypeGuard
def is_user(data: object) -> TypeGuard[User]:
return isinstance(data, dict) and \
'id' in data and 'name' in data
if is_user(data):
print(data['name']) # 型安全
3. 型チェッカーの実行
TypeScript: strict mode有効化
{
"compilerOptions": {
"strict": true,
"noImplicitAny": true,
"strictNullChecks": true
}
}
Python: mypy/pyright実行
mypy src/
pyright src/
⚡ クイックリファレンス
よくある状況と解決策
| 状況 | 悪い例 | 良い例 |
|---|---|---|
| API レスポンス | response: any | response: ApiResponse |
| 不明な型 | data: any | data: unknown + 型ガード |
| 複数の型 | value: any | value: string | number |
| オプショナル | user!.name | user?.name ?? 'Unknown' |
| 配列操作 | items: any[] | items: User[] |
ファイル構成の推奨
src/
├── types/
│ ├── api.ts # API型定義
│ ├── models.ts # データモデル型
│ └── utils.ts # ユーティリティ型
├── guards/
│ └── type-guards.ts # 型ガード関数
└── ...
📊 型安全性レベル
コードの型安全性は以下のレベルで評価されます:
レベル1: 基本(必須)
- any/Any型を使用していない
- すべての関数に型注釈
- strict mode有効化
レベル2: 標準(推奨)
- 型ガードの適切な使用
- ジェネリクスの活用
- Utility Typesの活用
レベル3: 高度(理想)
- 構造的部分型(Protocol)の活用
- 型レベルプログラミング
- 100%型カバレッジ
🔧 実装前の確認事項
新しいコードを書く前に:
-
型定義ファイルの確認
- 既存の型を再利用できないか
- 新しい型定義が必要か
-
外部ライブラリの型
- 型定義がパッケージに含まれているか
- @types/パッケージが必要か
-
型の共有範囲
- ローカル型で十分か
- 共有型として定義すべきか
🔗 関連スキル
- applying-solid-principles: SOLID原則とクリーンコード
- testing: 型安全なテストコード
- securing-code: セキュアな型使用
- implementing-as-tachikoma: Developer実装時の型安全性
詳細は各ファイルを参照してください。
スコア
総合スコア
40/100
リポジトリの品質指標に基づく評価
✓SKILL.md
SKILL.mdファイルが含まれている
+20
○LICENSE
ライセンスが設定されている
0/10
○説明文
100文字以上の説明がある
0/10
○人気
GitHub Stars 100以上
0/15
○最近の活動
3ヶ月以内に更新がある
0/10
○フォーク
10回以上フォークされている
0/5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
○タグ
1つ以上のタグが設定されている
0/5
レビュー
💬
レビュー機能は近日公開予定です