title: Abstract constructor type in TypeScript
body: <p>The type signature for a non-abstract class (non-abstract constructor function) in TypeScript is the following:</p>
  
  <pre><code>declare type ConstructorFunction = new (...args: any[]) =&gt; any;
  </code></pre>
  
  <p>This is also called a <em>newable</em> type. However, I need a type signature for an <em>abstract</em> class (abstract constructor function). I understand it can be defined as having the type <code>Function</code>, but that is <em>way</em> too broad. Isn't there a more precise alternative?</p>
  
  <hr>
  
  <p><strong>Edit:</strong></p>
  
  <p>To clarify what I mean, the following little snippet demonstrates the difference between an abstract constructor and a non-abstract constructor:</p>
  
  <pre><code>declare type ConstructorFunction = new (...args: any[]) =&gt; any;
  
  abstract class Utilities {
      ...
  }
  
  var UtilityClass: ConstructorFunction = Utilities; // Error.
  </code></pre>
  
  <blockquote>
    <p>Type 'typeof Utilities' is not assignable to type 'new (...args: any[]) => any'.</p>
    
    <blockquote>
      <p>Cannot assign an abstract constructor type to a non-abstract constructor type.</p>
    </blockquote>
  </blockquote>