Abstract constructor type in TypeScript
As of TypeScript 4.2, you can use an abstract constructor type:
abstract class Utilities {
abstract doSomething(): void;
}
type ConstructorFunction = abstract new (...args: any[]) => any;
var UtilityClass: ConstructorFunction = Utilities; // ok!
Was just struggling with a similar problem myself, and this seems to work for me:
type Constructor<T> = Function & { prototype: T }