idening. Basically, when literal widening happens, a literal type
like <code>"foo"</code> or <code>SomeEnum.Member</code> gets treated as its base type:
<code>string</code> or <code>SomeEnum</code>, respectively. The places where literals widen,
however, cause the behaviour to be hard to understand. Literal
widening is described fully
<a href="https://github.com/Microsoft/TypeScript/pull/10676">at the literal widening PR</a>
and
<a href="https://github.com/Microsoft/TypeScript/pull/11126">its followup</a>.<