de>extra</code>'s computed type is just
<code>Thing</code> inside the block. The check proves that <code>undefined</code> can't be
part of the type since <code>undefined</code> is falsy.
<code>Thing | undefined</code> has <em>narrowed</em> to <code>Thing</code>.</p>
<p>Similarly, the declared type of <code>extra.name</code> is <code>'one' | 'two'</code>, but
inside the true branch of <code>if (extra.name === 'one')</code>, its computed
type is just <code>'one'</code>.</p>
<p>Narrowing mostly commonly remove