在接口中使用TypeScript泛型方法签名

31

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

它是一个 filterUnique 方法,因此它应该能够过滤数字、字符串等列表。

以下代码对我来说无法编译:

export interface IGenericServices {
    filterUnique(array: Array<T>): Array<T>;
}

有没有办法使这个编译通过,或者我在这里犯了什么概念错误?

干杯!

1个回答

37

T类型尚未定义。需要将其作为类型变量添加到方法中,例如:

filterUnique<T>(array: Array<T>): Array<T>;

或者添加到界面中,如下:

export interface IGenericServices<T> {
    filterUnique(array: Array<T>): Array<T>;
}

28
如果有帮助的话,您还可以为接口的方法定义一个泛型,而不需要为整个接口定义泛型:interface MyInterface { method: <T>(arg: T): T; } - williaster
15
如果您将其作为答案发布,我会给您点赞,因为当我访问此页面时,这正是我正在寻找的语法。谢谢!小修正,请将“:”更改为“=>”:<T>(arg:T)= > T; - Wilt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接