从泛型访问原型

时间:2017-08-18 14:14:00

标签: typescript generics

具有class Foo<A> {}等通用的类是否可以访问A原型或在A上使用typeguard,或运行任何类型的逻辑单独在A的类型上 - 没有向Foo的构造函数提供类,接口或实例(即Foo没有构造函数或构造函数不接受A类型的参数?

有几个关于访问构造函数的答案,例如Generic Type Inference with Class Argument,但我只对基于类型运行不同逻辑感兴趣,而不是实例化它的新实例。

具体来说,我想知道A.prototype是否定义了某种方法。

1 个答案:

答案 0 :(得分:0)

如果您的目标是仅允许具有特定功能的A类,您也可以使用带泛型的扩展机制,如下所示:

interface B {
   myMandatoryFunction()
}

class Foo<A extends B> {
   //...
}

如果你的Generic类中的一个动作基于A在其原型上有一个函数或者没有函数,你将不得不实例化一个A对象并查看它的原型,因为Typescript类型只是在代码执行期间参与编译和检查对象的类型与使用instanceof方法的js完全相同,因此不适用于类型