functional-ts-ja
Installation
SKILL.md
Functional Domain Modeling in TypeScript
サーバーサイドTypeScriptでドメインモデルを書くときの原則。classベースのOOPではなく、TypeScriptの型システムを最大限に活用した関数型アプローチを採る。
1. 型によるドメインモデリング
Discriminated Unionで状態を表現し、kind をdiscriminantとして統一する。type(interface ではなく)、Companion Object、Branded Types、Readonly<>、関数プロパティ記法、1概念1ファイル構成を使う。
バリデーションライブラリの検出: プロジェクトの package.json の dependencies / devDependencies を確認:
zod→ validation-libraries/zod.mdvalibot→ validation-libraries/valibot.mdarktype→ validation-libraries/arktype.md
2. 関数による状態遷移
純粋関数で状態遷移を表現する。関数の引数型が有効な遷移元を制約し、戻り値型が遷移先を明示する。無効な遷移はコンパイルエラーになる。assertNever で網羅性をチェックする。