title: TS compiler not happy about union type involving enum brand (nominal typing)
body: <p>I am using an enum to achieve nominal typing (like e.g. suggested in the <a href="https://basarat.gitbooks.io/typescript/docs/tips/nominalTyping.html" rel="nofollow noreferrer">TypeScript Deep Dive</a> book):</p>
  
  <pre><code>enum ExampleIdBrand {}
  export type ExampleId = ExampleIdBrand &amp; string
  const exampleId: ExampleId = '42' as ExampleId
  
  const m1 = (e: ExampleId) =&gt; e.toUpperCase()
  m1(exampleId) // ✅
  </code></pre>
  
  <p>So far, everything works just like expected. However, if I change the method to accept a (wider) union type, the compiler no longer accepts my <code>exampleId</code>:</p>
  
  <pre><code>const m2 = (e: ExampleId | 'whatever') =&gt; e.toUpperCase()
  m2('whatever') // ✅
  m2(exampleId) //  Does not compile
  </code></pre>
  
  <p>Why doesn't the last line compile just fine? (TS 3.3.4000)</p>