TL;DR

  • タプルはほとんどのシリアライズフォーマットで扱えないので、DTO ではレコード型で表現する。

内容

ドメイン型を DTO に変換する方法の 1 つである。タプルはほとんどのシリアライズフォーマットが対応していないので、要素ごとにフィールドを持つレコード型で表現する。

// ドメイン
type Suit = Heart | Spade | Diamond | Club
type Rank = Ace | Two | Queen | King | ...
type Card = Suit * Rank // タプル
 
// DTO
type SuitDto = Heart = 1 | Spade = 2 | Diamond = 3 | Club = 4
type RankDto = Ace = 1 | Two = 2 | Queen = 12 | King = 13 | ...
type CardDto =
    { Suit: SuitDto
      Rank: RankDto }

Suit と Rank は列挙型を DTO に変換すると同じく整数の列挙型にしている。

キーワード