从泛型类获取方法的参数 - TypeScript

时间:2021-04-15 17:45:46

标签: typescript generics visual-studio-code intellisense

我有一个具有两种方法的泛型类,其中一个调用另一个。由于两者都采用相同的参数,我尝试使用 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>.

有什么想法吗?

1 个答案:

答案 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);
    }
}