title: TypeScript: Cannot use 'new' with an expression whose type lacks a call or construct signature
body: <p>I have a function that instantiates a object with a given constructor, passing along any arguments.</p>
  
  <pre><code>function instantiate(ctor:Function):any {
      switch (arguments.length) {
          case 1:
              return new ctor();
          case 2:
              return new ctor(arguments[1]);
          case 3:
              return new ctor(arguments[1], arguments[2]);
          ...
          default:
              throw new Error('"instantiate" called with too many arguments.');
      }
  }
  </code></pre>
  
  <p>It is used like this:</p>
  
  <pre><code>export class Thing {
      constructor() { ... }
  }
  
  var thing = instantiate(Thing);
  </code></pre>
  
  <p>This works, but the compiler complains about each <code>new ctor</code> instance, saying <code>Cannot use 'new' with an expression whose type lacks a call or construct signature.</code>. What type should <code>ctor</code> have?</p>