我正在尝试构造一个函数,该函数将一个类(Clazz
)作为参数,并返回如下相同类的实例
function myFunction(Clazz) {
...
return new Clazz();
}
是否有任何方法可以推断Clazz
的类型并将其设置为该函数的返回类型?
我知道我可以使用泛型实现以下目的:
function myFunction<T>(Clazz: new () => T): T {
...
return new Clazz();
}
var instance = myFunction<myClass>(myClass)
但是我的意图是摆脱上述用法中myClass
的重新定义
答案 0 :(得分:1)
是的,只需删除<myClass>
,您就可以开始了:
function myFunction<T>(Clazz: new () => T): T {
return new Clazz();
}
class myClass {
public m() { }
}
var instance = myFunction(myClass) // instance is typed as myClass, T is infered to myClass
instance.m() // ok
Typescript将基于函数的参数推断类型参数。很少需要传递显式类型参数(通常,这通常是对类型参数使用不当的一种征兆,并非总是如此,而是通常如此)。