title: How to go about understanding the type `new (...args: any[]) => any`
body: <p>I'm reading through the code of the <a href="https://github.com/typestack/class-validator" rel="noreferrer">class-validator</a> library and it has the following <code>isInstance</code> method in it:</p>
  
  <pre><code>/**
   * Checks if the value is an instance of the specified object.
   */
  isInstance(object: any, targetTypeConstructor: new (...args: any[]) =&gt; any) {
      return targetTypeConstructor
          &amp;&amp; typeof targetTypeConstructor === "function"
          &amp;&amp; object instanceof targetTypeConstructor;
  }
  </code></pre>
  
  <p>Any thoughts on how to go about understanding the type <code>new (...args: any[]) =&gt; any</code>?  This is the first time I'm seeing this type of construct ...</p>