接口中的TypeScript通用方法签名

dac*_*cox 17 generics typescript

我试图用几个方法定义一个接口,我希望其中一个方法是通用的.

这是一种filterUnique方法,因此它应该能够过滤数字,字符串等列表.

以下内容不适合我:

export interface IGenericServices {
    filterUnique(array: Array<T>): Array<T>;
}
Run Code Online (Sandbox Code Playgroud)

有没有办法让这个编译,或者我在某处犯了一个概念上的错误?

干杯!

tho*_*epo 21

T类型尚未定义.它需要作为类型变量添加到方法中,如:

filterUnique<T>(array: Array<T>): Array<T>;
Run Code Online (Sandbox Code Playgroud)

或者添加到界面中:

export interface IGenericServices<T> {
    filterUnique(array: Array<T>): Array<T>;
}
Run Code Online (Sandbox Code Playgroud)

  • 如果它对其他人有帮助,您还可以为接口的*方法*定义一个泛型,而不需要*整个*接口的泛型: `interface MyInterface { method: &lt;T&gt;(arg: T): T; }` (10认同)
  • @williaster如果你将其作为答案发布,你会得到我的支持,因为该语法正是我登陆此页面时所寻找的。谢谢!小修正,将 `:` 更改为 `=&gt;`:`&lt;T&gt;(arg: T) =&gt; T;` (6认同)