functional-ts
Installation
SKILL.md
Functional Domain Modeling in TypeScript
サーバーサイドTypeScriptでドメインモデルを書くときの原則。classベースのOOPではなく、TypeScriptの型システムを最大限に活用した関数型アプローチを採る。
1. 型によるドメインモデリング
Discriminated Unionで状態を表現する
ドメインエンティティの状態はclassではなくDiscriminated Unionで定義する。各状態を個別の型として定義し、状態固有のプロパティを必須にする。
// Good: 各状態が独立した型。状態固有のプロパティが必須
type Waiting = Readonly<{
kind: "Waiting";
passengerId: PassengerId;
}>;