で定義 型つきで利用 → 確定 標準の 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