TypeScript 接口上一个 属性 的通用类型

Generic typings for one property on an Interface in TypeScript

我正在尝试键入一个方法,它是接口的一部分,我需要它采用泛型。下面是我想要的一个简化示例。我希望 API 的用户能够 带有泛型的类型方法。但是我不知道在这里指定它。

任何人都可以向我解释如何在 Main 上向 method 添加泛型吗?没有将泛型传递给 Main 接口,而是传递给实际方法。

interface Method<T> {
  (t: T): T
}

interface Main {
  method: Method
}

const main: Main = {
  method: id => id,
}

main.method<string>('test')

您定义了一个恰好是函数的泛型类型。你真正想要的是一个通用函数。为此,您需要将泛型类型列表放在签名上,而不是类型

interface Method {
  <T>(t: T): T
}

interface Main {
  method: Method
}

const main: Main = {
  method: id => id,
}

main.method<string>('test')

Playground Link