"I can't imagine a single situation where you expect variables used in a sum operation to be arrays/objects."
That's precisely the problem. You don't expect them, but there's nothing to prevent it from happening, so it does.
Your proposed solutions don't solve the problem, they occur too late. By the time you're adding together two non-numbers (and non-strings) you've already lost, trying desperately to cast them to numbers first is also wrong, along with so verbose that nobody will ever do it.
You always have the option to use