title: How to create a new object of type 'T' in generic class in typescript?
body: <p>I have the following service</p>
  
  <pre><code>@Injectable()
  export class CollectionService&lt;T&gt; {    
  
      constructor(protected http: Http) {}
  
      factory&lt;T&gt;(item?: any): T {
          let type: new (item?: any) =&gt; T;
          return new type(item);
      }
  
      item(id): Observable&lt;T&gt; {
          return this.http.get(`${this.baseUrl}/${id}`)
              .map((resp: Response)=&gt; this.factory(resp.json()))
              .catch((error: any) =&gt; {
                  return Observable.throw(error);
              });
      }
  }
  </code></pre>
  
  <p>Compilation passes successfully, but i have folowing error in browser console</p>
  
  <pre><code>TypeError: type is not a constructor
  at PortalVideoService.webpackJsonp.../../../../../src/app/services/collection/collection.service.ts.CollectionService.factory (http://localhost:4200/main.bundle.js:1568:16)
  at http://localhost:4200/main.bundle.js:1580:64
  at Array.map (native)
  at MapSubscriber.project (http://localhost:4200/main.bundle.js:1580:29)
  at MapSubscriber.webpackJsonp.../../../../rxjs/operator/map.js.MapSubscriber._next (http://localhost:4200/vendor.bundle.js:24034:35)
  at MapSubscriber.webpackJsonp.../../../../rxjs/Subscriber.js.Subscriber.next (http://localhost:4200/vendor.bundle.js:13455:18)
  at XMLHttpRequest.onLoad (http://localhost:4200/vendor.bundle.js:101703:38)
  at ZoneDelegate.webpackJsonp.../../../../zone.js/dist/zone.js.ZoneDelegate.invokeTask (http://localhost:4200/polyfills.bundle.js:2838:31)
  at Object.onInvokeTask (http://localhost:4200/vendor.bundle.js:93420:37)
  at ZoneDelegate.webpackJsonp.../../../../zone.js/dist/zone.js.ZoneDelegate.invokeTask (http://localhost:4200/polyfills.bundle.js:2837:36)
  </code></pre>
  
  <p>How can I create an object of type T?</p>