Slide 8
Slide 8 text
Mangrove::Enum
データ( type
で形が変わる) 生の Hash で利用 → T.untyped
Mangrove::Enum で定義 型つきで利用 → 確定
標準の T::Enum
は名前の集合。Mangrove の Enum はバリアントごとに値を持てる
{ "type": "person", "data": { "name": "Alice", "age": 30 } }
{ "type": "book", "data": { "title": "1984", "author": "Orwell" } }
case res["type"]
when "book"
res["data"]["title"] # => T.untyped
end
class MyApiResponse
extend Mangrove::Enum
variants do
variant Person, Person
variant Book, Book
end
end
case res
when MyApiResponse::Person
res.age # => Integer
when MyApiResponse::Book
res.title # => String
end