Note: This feature is being enabled through babel, and unfortunately
doesn't really have any typescript support. Using an overloaded operator
will show an error and be typed as "any". If ecmascript ever
support operator overloading, then typescript will follow suit and these
issues can be resolved.
Here's the current proposal for how that could look like, although it's
a long way's off from being accepted, if it ever is:
https://github.com/tc39/proposal-operator-overloading
Alternatively, there's a proposal for declaring that certain types have
operator overloads, which would also work just perfectly:
https://github.com/microsoft/TypeScript/issues/42218
In the meantime, the errors will unfortunately remain present, although
they won't cause any issues in production.
BTW, the rhs can be any DecimalSource, but the lhs has to be a Decimal.
Oh man did this end up requiring a *ton* of other work as well.
There's still a few typing issues I still can't quite work out,
and others I'd like to improve when I have time. In fact, this version
doesn't even really work, it has a stack overflow error caused by
a tooltip for some reason have a tree inside it, which in turn has
another tooltip, etc. There's also 17 errors that I *really* feel like
shouldn't be there, but they are, and 113 warnings - mostly using !
to assert that things are non-null. Lots of work left to do, to sum up.
The reason I'm committing this now is because I really need to get to
work on my game jam, and since it won't use a tree or really many of
TMT-X's features, I can get away with using a broken engine :)