推断打字稿中的参数类型

时间:2019-06-04 07:52:01

标签: typescript

我正在尝试构造一个函数,该函数将一个类(Clazz)作为参数,并返回如下相同类的实例

function myFunction(Clazz) {
    ...
    return new Clazz();
}

是否有任何方法可以推断Clazz的类型并将其设置为该函数的返回类型? 我知道我可以使用泛型实现以下目的:

function myFunction<T>(Clazz: new () => T): T {
    ...
    return new Clazz();
}

var instance = myFunction<myClass>(myClass)

但是我的意图是摆脱上述用法中myClass的重新定义

1 个答案:

答案 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将基于函数的参数推断类型参数。很少需要传递显式类型参数(通常,这通常是对类型参数使用不当的一种征兆,并非总是如此,而是通常如此)。