Issue
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
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
The code above will allow only classes whose constructor has no argument. If you want any class, use new (...args: any[]) => Class
Answered By - Nitzan Tomer
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.