title: TypeScript '{}' type
body: <p>Question about TypeScript <code>{}</code> type - up to this point I thought it means "empty object with no properties" type, but recently I stumbled upon eslint rule which forbids using <code>{}</code> type because means "any non nullish value". Quick test in typescript playground says it's true:</p>
  
  <pre><code>let d: {} = {};
  
  d = false;
  </code></pre>
  
  <p>This code doesn't give compiler error, but when I try to assign <code>null</code> to d, indeed there is an error. So my questions are:</p>
  
  <ol>
  <li><p>What is actually <code>{}</code> type in TypeScript? Does it really stands for "any non nullish value" (can't find confirmation in TypeScript documentation)?</p></li>
  <li><p>How should I actually type "empty object without any properties"?</p></li>
  </ol>