3 ms·
The real safe assignment that I want to see is for optional chaining to be valid in LHS of assignments: foo?.bar = 42; This would not perform the assignme
by spankalee 2y ago
The real safe assignment that I want to see is for optional chaining to be valid in LHS of assignments:
foo?.bar = 42;
This would not perform the assignment if an optionally chained value was nullish. It downlevels to
foo == null ? undefined : foo.bar = 42;
Given that the assignment is a SyntaxError now, this should be possible.
- gqcwwjtg 2y agoWould it evaluate the RHS? It feels like it shouldn’t, but somehow that seems weird too.
- nuxi 2y agoYou can avoid the SyntaxError by abusing boolean expressions a bit: > obj = {} {} > obj != null && (obj.bar = 42) 42 > obj { bar: 42 } Not as pretty as your LHS case, but it works.
- Wingy 2y agoWith the length of that you might as well do: if (obj) obj.bar = 42