ng: treat a literal type as a primitive one.</li>
<li>Narrowing: remove constituents from a union type.</li>
<li>Instanceof narrowing: treat a type as a subclass.</li>
<li>Apparent type: treat a non-object type as an object type.</li>
</ol>
<h2 id="widening"><a href="#widening">Widening</h2></a>
<p>Widening is the simplest operation. The types <code>null</code> and <code>undefined</code>
are converted to <code>any</code>. This happens recursively in object types,
union types, and array types (including tupl