Is there a type for "Class" in Typescript? And does "any" include it?
In Java, you can give a class to a method as a parameter using the type "Class". I didn't find anything similar in the typescript docs - is it possible to hand a class to a method? And if so, does the type "any" include such class-types?
Background: I'm having an issue with Webstorm, telling me that I cannot hand over a class to @ViewChild(...)
in Angular 2. However, the Typescript compiler does not complain. The signature of @ViewChild()
seems to be "Type<any> | Function | string"
, so I wonder if any includes Classes or not.
Solution 1:
The equivalent for what you're asking in typescript is the type { new(): Class }
, for example:
class A {}
function create(ctor: { new(): A }): A {
return new ctor();
}
let a = create(A); // a is instanceof A
(code in playground)
The code above will allow only classes whose constructor has no argument. If you want any class, use new (...args: any[]) => Class
Solution 2:
The simplest solution would be let variable: typeof Class
.
Here an example:
class A {
public static attribute = "ABC";
}
function f(Param: typeof A) {
Param.attribute;
new Param();
}
f(A);