<div dir="ltr"><div>Why is this needed? Why are people trying to get the property of an object which is null? Why is the object null in the first place? This can probably be considered poor program design. It's sort of like trying to dereference a null pointer. In addition, parameter defaults and defaults in destructuring may make this somewhat less of an issue.</div><div><br></div><div>Note that TS2 is explicitly moving away from permitting null to be assigned to something which is alleged to be an object. (Although TS2 has "stolen" the `!` operator, it is merely a type assertion--a narrowing from `object | null` to `object` as I understand it. It is not a run-time check.)</div><div><br></div><div>But let's say we nevertheless think this is an important feature. It has been discussed at great length here. No proposal has ever had the inevitability, generality, or intuitiveness that would allow it to gain traction. All the proposals are essentially little syntactic hacks. <br></div><div><br></div><div>Can we find some more general extension to JS syntax that solves or mitigates this problem as well as others? Kills two birds with one stone? One that seems like a natural extension to current syntax, instead of an extra magic character we stick somewhere to solve one specific problem?</div><div><br></div><div>Just as an example, consider the following idiom for null propagation:</div><div><br></div><div>```<br></div><div><div>a ? a.b ? a.b.c : undefined : undefined<br></div><div>```<br></div><div><br></div><div>We can leverage this pattern by allowing the `:` in the ternary operator to be omitted (defaulting to undefined), allowing us to write:<br></div><div><br></div><div>```</div><div>a ? a.b ? a.b.c</div><div>```</div><div><br></div><div>Whether you love it or hate it, at least this solves more problems that just null propagation. I'm not seriously suggesting this. I'm just saying we need to be more creative in brainstorming possible solutions to the problem.</div><div><br></div><div>--</div><div>Bob</div><div><br></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Oct 13, 2016 at 9:37 PM, Claude Pache <span dir="ltr"><<a href="mailto:claude.pache@gmail.com" target="_blank">claude.pache@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><br><div><span class=""><blockquote type="cite"><div>Le 13 oct. 2016 à 17:14, Kagami Rosylight <<a href="mailto:saschanaz@outlook.com" target="_blank">saschanaz@outlook.com</a>> a écrit :</div><br class="m_-8259947317895322465Apple-interchange-newline"><div><div class="m_-8259947317895322465WordSection1" style="font-family:Helvetica;font-size:14px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><div style="margin:0in 0in 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><u></u> <u></u></div><div style="margin:0in 0in 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif">>IIRC the proposed syntax for computed properties was x?.[y],</div><div style="margin:0in 0in 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><u></u> <u></u></div><div style="margin:0in 0in 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif">Yes you’re right, sorry :/</div><div style="margin:0in 0in 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"><u></u> <u></u></div><div style="margin:0in 0in 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif">IMO it still seems the syntax problem is the main reason why this proposal has stalled. If not, what is the problem here?</div></div></div></blockquote><div><br></div></span><div>The issue with `?.[` is that it is considered as not pretty by some people. A syntax that is at the same time pretty, technically working, and not confusing is difficult to find.</div><div><br></div><div>Concerning your suggestion of using `!`: From a technical point of view, using `![` instead of `?.[` may work only if you forbid a line terminator before the `!`, because the following program is valid as of today (with implied semicolons):</div><div><br></div><div>```js</div><div>foo</div><div>![42]</div><div>```</div><span class=""><div><br></div><blockquote type="cite"><div><div class="m_-8259947317895322465WordSection1" style="font-family:Helvetica;font-size:14px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><div style="margin:0in 0in 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"> I’m curious why this proposal is not even listed in stage 0 proposal list.</div></div></div></blockquote><div><br></div></span><div>Because no representative of TC39 has volunteered to champion it.</div><span class="HOEnZb"><font color="#888888"><div><br></div><div>—Claude</div></font></span></div><br></div><br>______________________________<wbr>_________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" rel="noreferrer" target="_blank">https://mail.mozilla.org/<wbr>listinfo/es-discuss</a><br>
<br></blockquote></div><br></div>