我有一些工厂方法正在进行一些计算和操作。我也有一个通用的方法doSomething。我不想每次都指定doSomething的类型。我想为工厂方法做一次,然后每次用已经分配的类型来获取它
function factory<T>(t: T){
// some computations
return {method: doSomething<T>} <- this is what I wanna do
}
// Generic
function<T extends object>doSomething(): T{
//complex stuff, a lot of lambdas
}
如何从工厂方法返回具有所有已分配类型的doSomething?
答案 0 :(得分:1)
您不能在不调用泛型函数的情况下指定其类型参数。因此doSomething<T>
是不可接受的;仅允许doSomething<T>()
。幸运的是,您可以返回一个具体函数,该函数使用指定的正确类型参数调用泛型函数。像这样:
function factory<T extends object>(t: T) {
// some computations
return { method: ()=>doSomething<T>() }
}
// Generic, note generic parameter comes after the function name
declare function doSomething<T extends object>(): T;
让我们看看它是否有效:
const ret = factory({a: "hey"}).method();
// const ret: { a: string }
对我很好。希望能有所帮助;祝你好运!