код получается приблизительно такой (вариаций на самом деле масса, но идея та же): берется DU, для каждого кейса в этом DU определяется тип тела, для вязкости добавляются кастомные парсеры для каждого кейса, все это сваливается в один СПИСОК
как вы понимаете, реальные типы куда более развесистые, поэтому количество кода растет экспоненциально. и даже в этом псевдокоде я умудрился сделать пару багов
я в курсе за UnionContract из TypeShape, но во-первых, он решает только небольшую часть проблемы, а во-вторых, количество кода приблизительно эквивалентное
по сути, в таком подходе у нас нет возможности работать с обобщенным типом MyEvent (надо вручную мейнтейнить этот дикий match на десяток кейсов) и нет никаких гарантий на структуру самого сообщения
я в курсе за UnionContract из TypeShape, но во-первых, он решает только небольшую часть проблемы, а во-вторых, количество кода приблизительно эквивалентное
в смысле, если мой жсон имеет вид типа {id:..., type: ..., payload: {...}} - я должен полагаться только на добрую волю других разрабочиков в надежде, что в всех структурах будет определен скажем payload
по сути, в таком подходе у нас нет возможности работать с обобщенным типом MyEvent (надо вручную мейнтейнить этот дикий match на десяток кейсов) и нет никаких гарантий на структуру самого сообщения