泛型的Typescript使用方法签名

时间:2020-01-06 15:47:58

标签: typescript typescript-generics

是否可以做这样的事情?这将有很大帮助。我们从泛型中获得方法签名

class Foo<Parent extends Foo> {
    public bar<U extends Parameters<Parent.bar>>(x: U) {
    }
}

1 个答案:

答案 0 :(得分:1)

如果希望Parent扩展Foo,则不能这样做,因为那样会导致类型的循环依赖,但是如果将Parent约束到其他东西,则可以这样做bar

class Foo<Parent extends { bar: (...a: any[]) => any}> {
    public bar<U extends  Parameters<Parent['bar']>>(x: U) {
    }
}

Playground Link

您可能还对该版本将参数传播回bar函数的版本感兴趣:

class Foo<Parent extends { bar: (...a: any[]) => any}> {
    public bar(...x: Parameters<Parent['bar']>) {
    }
}

Playground Link

相关问题