TypeScriptの型でドメインモデリング⛅️
BRANK
紹介することTypeScriptの型を厳密に定義し、ドメインモデリングを行います。ソースコードがドキュメントとして機能することを目指します。具体的には、Branded Typeやタグ付きユニオンなどの技法を扱います。この記事は、TypeScriptをこれから使いこなしてみたい方向けの内容です。紹介しないことドメイン駆動開発や関数型プログラミングの概念については、深くは触れません。Make Illegal States Unrepresentableあり得る型だけを定義するという考え方です。詳細は以下を御覧ください。 User { id: number; name: string; isVerified: boolean; verifiedDate?: Date; } この定義では、どのような状況でどのような値が入るのかがわからないため、ドキュメントとして機能していません。ドメインモデリングを行うと、以下のようになります。ドメインモデリングされた型interface UserBase { id: number; name: string; } interface VerifiedUser extends UserBase { isVerified: true; verifiedDate: Date; } interface UnverifiedUser extends UserBase { isVerified: false; } type User = VerifiedUser UnverifiedUser; これにより、認証されるとisVer…