title: What is the purpose of the empty object type {} in typescript?
body: <p>In the @types/React package of the <a href="https://github.com/DefinitelyTyped/DefinitelyTyped" rel="nofollow noreferrer">DefinitelyTyped</a> library I ran into this definition</p>
  
  <pre><code>interface FunctionComponent&lt;P = {}&gt; {
          (props: PropsWithChildren&lt;P&gt;, context?: any): ReactElement | null;
          propTypes?: WeakValidationMap&lt;P&gt;;
          contextTypes?: ValidationMap&lt;any&gt;;
          defaultProps?: Partial&lt;P&gt;;
          displayName?: string;
      }
  </code></pre>
  
  <p>I read that the {} type is called the Empty Object type and its purpose is to describe an object with not properties on its own.</p>
  
  <p>Can someone explain why it's used as a default type for most generic functions ?</p>