接口中的TypeScript通用方法签名

问题描述 投票:0回答:2

我正在尝试用一些方法定义一个接口,并且我希望其中一个方法是通用的。

这是一个

filterUnique
方法,所以它应该能够过滤数字、字符串等列表。

以下内容不适合我编译:

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

有没有办法进行编译,或者我在这里犯了一个概念错误?

干杯!

generics typescript
2个回答
37
投票

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

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

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

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

0
投票

williaster的评论作为答案,因为它也涵盖了许多人正在寻找的这个问题。

您还可以为接口的方法定义泛型,而不需要整个接口的泛型:

interface MyInterface {
  method: <T>(arg: T) => T;
}
© www.soinside.com 2019 - 2024. All rights reserved.