//// [genericNewInterface.ts] function createInstance(ctor: new (s: string) => T): T { return new ctor(42); //should be an error } interface INewable { new (param: string): T; } function createInstance2(ctor: INewable): T { return new ctor(1024); //should be an error } //// [genericNewInterface.js] function createInstance(ctor) { return new ctor(42); } function createInstance2(ctor) { return new ctor(1024); }