Ok, I checked what Go does. It indeed can generate runtime validators from types. Neat, TIL. I'd argue it's not by default a capability of statically typed languages, rather something that a language creator can choose to add via reflections or some other mechanisms. So in my mind it's not really static vs dynamic systems.
In Typescript you would need to use additional libraries like this: https://typia.io/