网站搜索

typescript - 如何为接口方法指定泛型参数


考虑以下示例:

type Foo<T> = (x: T) => T[]
type X = ReturnType<Foo<number>>

如预期,X=number[]

现在,这个函数是接口的一部分:

interface Bar {
    foo<T>(x: T): T[]
}

type BarFoo = Bar['foo']
type Y = ReturnType<BarFoo<number>>
type Z = ReturnType<Bar['foo']<number>>

第 Y 行失败,出现 BarFoo 不是泛型

第 Z 行出现语法错误(预期 '>')

我如何获取通用接口方法的特定版本?

这也不起作用(结果是 unknown[]):

type Ret = BarFoo extends (x: number) => infer T ? T : never