From TS
type InstanceType<T extends new (...args: any) => any> = T extends new (...args: any) => infer R ? R : any;
Say, I have a class Foo,
class Foo {}
InstanceType<Foo>
gives never, and InstanceType<typeof Foo>
gives Foo. So my question is why Foo is not treated as new-able thing?