从泛型 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);
    }
}