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.
Supporting operator overloading is part of the linked TS issue [1]. But I'm more curious: why did operator overloading in ES6 itself [2] die?
[1] https://github.com/microsoft/TypeScript/issues/42218
[2] https://github.com/tc39/proposal-operator-overloading
Probably if nothing else, impossible to have it perform well without static typing?
But traversing the prototype chain (to figure out method dispatch) is also potentially slow without static typing, and we're managing that ok, no?
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.