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

标签 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> .

有什么想法吗?

最佳答案

您需要使用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);
    }
}

关于typescript - 从泛型类获取方法的参数 - TypeScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67113515/

相关文章:

powershell - Visual Studio Code 中的多线程调试

javascript - Uncaught ReferenceError : Oncheckboxclicked is not defined at HTMLElement. onclick

javascript - 从对象数组中获取单个属性数组

c# - 使用实现层次结构的多个接口(interface)的类进行类型推断

c# - 更好地理解 C# 泛型

c# - 通用代理类

ruby-on-rails - VSCode 提示 Ruby UTF-8 文件具有无效的多字节字符 (US-ASCII)

eclipse - VS Code 有像 eclipse 中的 ctrl+q 这样的快捷键吗?

generics - TypeScript 中是否可以使用泛型类型别名?

angularjs - Angular 指令未填充 ui-sref