在Java中,你可以使用类型“Class”给予一个class to a method作为一个参数。我在typescript文档中没有找到任何类似的东西--有可能将一个类传递给一个方法吗?如果有,类型“any”包括这样的类类型吗?
背景:Webstorm有一个问题,告诉我不能在Angular 2中将类交给@ViewChild(...)
。但是,Typescript编译器没有抱怨。@ViewChild()
的签名似乎是"Type<any> | Function | string"
,所以我想知道是否有包含类的。
8条答案
按热度按时间agyaoht71#
在typescript中,与你所要求的等价的是类型
{ new(): Class }
,例如:(code在操场上)
上面的代码只允许构造函数没有参数的类。
kcwpcxri2#
最简单的解决方案是
let variable: typeof Class
。下面是一个例子:
lztngnrs3#
Angular在内部声明
Type
为:使用TypeScript3应该可以添加types for arguments而不需要函数重载:
示例:
1mrurvl14#
是否有可能将一个类传递给一个方法?如果有,类型“any”是否包括这样的类类型?
any
包括所有类型。下面是一个只包含类的类型的示例:
然后使用它:
你不应该在
Function
的类中传递一个错误,因为这应该可以正常工作:yyyllmsg5#
**
Type<T>
**from@angular/core
是Class的合适接口。你可以使用它来保持对类的引用,而不是这个类的示例:
或
根据您对
@ViewChild
问题的背景:@ViewChild允许注入
"string selector"
/Component
/Directive
Type<any> | Function | string
的签名是一个抽象签名,允许我们注入上述所有内容。pieyvz9o6#
以下为我工作:
我的用例:
xmq68pz97#
下面是一个只包含类的类型的示例:
bvjveswy8#
以下是另一个不使用
typeof
的解决方案:Typescript有一个名为
InstanceType
的实用程序类型,它的声明是:你可以使用它来声明你自己的类类型,代码如下: