Plenty of solutions here such as code generation or Elm style combinators. Iām not convinced that Python style runtime meta programming is a particular robust solution since it is not (easily) checked statically.
Sure. But it would be nice not to need to describe the structure of your data twice if you need runtime validation. Since TS is such an ergonomic way of describing the structure of your types, runtime availablility is more attractive (to some) than relying on external libraries for that functionality.