title: Is there a way to utilize the nullish coalescing operator (`??`) in object property destructuring?
body: <p>In ReactJS, I commonly use this pattern of destructurnig props (I suppose it is quite idiomatic):</p>
  <pre><code>export default function Example({ ExampleProps }) {
    const {
      content,
      title,
      date,
      featuredImage,
      author,
      tags,
    } = ExampleProps || {};
  </code></pre>
  <p>I can add default values while destructuring, which adds some safety:</p>
  <pre><code>export default function Example({ ExampleProps }) {
    const {
      content = &quot;&quot;,
      title = &quot;Missing Title&quot;,
      date = &quot;&quot;,
      featuredImage = {},
      author = {},
      tags = [],
    } = ExampleProps || {};
  </code></pre>
  <p>But now I switched to TypeScript <code>strict</code> mode and I have quite a hard time. My props are typed by GraphQl codegen, and virtually all the properties are wrapped in a <code>Maybe&lt;T&gt;</code> type, so when unwrapped, there are like <code>actualValue | null | undefined</code>.</p>
  <p><strong>The default values <code>({ maybeUndefined = &quot;&quot;} = props)</code> can save me in case the value is <code>undefined</code>, but the <code>null</code> values would fall through</strong>, so the TS compiler is nagging and my code results in a lot of:</p>
  <pre><code>tags?.nodes?.length // etc…
  </code></pre>
  <p>which makes me a little nervous because of the <a href="https://betterprogramming.pub/the-costs-of-optional-chaining-eb21f357d6e2" rel="nofollow noreferrer">The Costs of Optional Chaining</a> article (although I don't know how relevat it still is in 2021). I've also heard <code>?.</code> operator overuse being referred as an example of &quot;code smell&quot;.</p>
  <p><strong>Is there a pattern, probably utilizing the <code>??</code> operator, that would make the TS compiler happy AND could weed out at least some of that <code>very?.long?.optional?.chains</code>?</strong></p>