从泛型 Class 中获取方法的参数 - TypeScript
Get the Parameters of a Method from a Generic Class - TypeScript
我有一个通用的 class,它有两种方法,其中一种调用另一种。由于两者采用相同的参数,我试图使用 Parameters Utility Type 将一个参数复制到另一个。但是,我无法弄清楚在访问 class 的方法时如何传递泛型:
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]
,但我不知道如何在引用 Thing.prototype.original
时传递 T
泛型。例如,Parameters<typeof Thing<T>.prototype.original>
.
有什么想法吗?
您需要使用 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);
}
}
我有一个通用的 class,它有两种方法,其中一种调用另一种。由于两者采用相同的参数,我试图使用 Parameters Utility Type 将一个参数复制到另一个。但是,我无法弄清楚在访问 class 的方法时如何传递泛型:
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]
,但我不知道如何在引用 Thing.prototype.original
时传递 T
泛型。例如,Parameters<typeof Thing<T>.prototype.original>
.
有什么想法吗?
您需要使用 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);
}
}