Am I incorrect in thinking this is not a TypeScript problem, but a problem most languages have, and that TypeScript is one of the few with a neat little solution?
In most languages you could probably solve this problem with a class. But wrapping all your numbers in a class with runtime consequences, just for a bit of extra type safety, feels quite extreme.
[1] https://github.com/microsoft/TypeScript/issues/42218
[2] https://github.com/tc39/proposal-operator-overloading