我有一个具有两种方法的泛型类,其中一个调用另一个。由于两者都采用相同的参数,我尝试使用 Parameters Utility Type 将一个参数复制到另一个中。但是,我无法弄清楚在访问类的方法时如何传递泛型:
class Thing<T> {
_a: T;
constructor(a: T) {
this._a = a;
}
original(anotherA: T, b: string) {
// do something...
}
unOriginal(...params: Parameters<typeof Thing.prototype.original>) {
return this.original(...params);
}
}
正如您在 unOriginal
方法中看到的,我没有在任何地方传递泛型 T
。因此,params
的计算结果为 [anotherA: any, b: string]
。相反,我希望它评估为 [anotherA: T, b: string]
,但我不知道如何在引用 T
时传递 Thing.prototype.original
泛型。例如,类似 Parameters<typeof Thing<T>.prototype.original>
.
有什么想法吗?
答案 0 :(得分:1)
您需要使用 Thing<T>["original"]
而不是 typeof Thing.prototype.original
class Thing<T> {
_a: T;
constructor(a: T) {
this._a = a;
}
original(anotherA: T, b: string) {
// do something...
}
unOriginal(...params: Parameters<Thing<T>["original"]>) {
return this.original(...params);
}
}