title: why can I assign a literal with unknown properties to a variable of type {}
body: <p>The below code fails type checking with:</p>
  <blockquote>
  <p>Object literal may only specify known properties</p>
  </blockquote>
  <pre><code>type A = {a: number}
  const a:A  = {a:42, b: 43};
  </code></pre>
  <p>Why then does the following succeed:</p>
  <pre><code>type A = {}
  const a:A  = {a:42, b: 43};
  </code></pre>
  <p>What's the intuition here? What is the type that only accepts objects with value <code>{}</code> ? Clearly the type <code>{}</code> accepts a lot more.</p>