The following code is fine:
function create<T>(ctor: { new (): T }) {
return new ctor();
}
class A { }
class B<T> extends A { }
let b = create(B); // b: B<any> --> OK
But if A is generic, the type is not correct.
class A<T> { }
class B<T> extends A<T> { }
let b = create(B); // b: A<any> --> Should be B<any>
Sorry if this has already been reported.