I suspect idiomatic TypeScript or idiomatic F# are both way better solutions in the real world
than abstruse Typescript emulating idiomatic F#.
Luckily, F# has type providers, which lets the compiler construct nominal types based on the structure of real data (like json, xml or any format you want), saving you from the effort of building wrapper types by hand.