Earlier quoted context omitted.
Not the GP, but here's an example of abstraction leaking straight from their intro tutorial: > A simple rule of thumb: the name of the updated variable must appear on the left hand side of the assignment. For example this... const foo = obj.foo; foo.bar = 'baz'; > ...won't trigger reactivity on obj.foo.bar, unless you follow it up with obj = obj. This looks like a huge footgun to me, and it's not even an exotic useca…
It's not an abstraction leaking, it's an important point to understand about mutating objects. You are allowed to use `const` to declare an object and then modify its properties, because modifying properties is not the same as reassigning. You're absolutely right that it's something that might catch you out, but not understanding the difference between reassigning and mutating is likely to lead to other bugs and fall…
If re-assignment of the whole object is what I have to do anyway, I'd much rather just be given an API that's slightly clunkier but makes that fact obvious. Otherwise the behavior will be surprising and error-prone to those not closely familiar with it yet.