Typescript泛型接口函数

时间:2017-10-10 12:49:58

标签: typescript generics interface

我的通用接口功能有点问题。我想我在同一点上看了太长时间......有人可以告诉我我做错了什么吗?

接口:

export interface Compareable<T>
{
    equals(compareable:T):boolean;
}

功能:

function isInCompareableArray<T>(compareable:Compareable<T>, arr:Array<Compareable<T>>) : boolean
{
  for(let i of arr)
  {
    if (compareable.equals(i)) return true;
  }

  return false;
}

呼叫:

let dateRef:DateRef //DateRef implements Compareable<DateRef>
let arr:Array<DateRef>

isInCompareableArray<DateRef>(dateRef, arr);

错误:

ERROR in function ... if (compareable.equals(i)) return true; 
...: Argument of type 'Compareable<T>' is not assignable to parameter of type 'T'.
我在这里迷失了方向。你能帮忙吗?

2 个答案:

答案 0 :(得分:1)

应该是:

function isInCompareableArray<T>(compareable: Compareable<T>, arr: Array<T>): boolean {
    for (let i of arr) {
        if (compareable.equals(i)) return true;
    }

    return false;
}

数组的类型为Array<T>(或简称T[]),而不是Array<Compareable<T>>

答案 1 :(得分:0)

哦,我的......羞辱我:)我失去了范围。

这有效:

功能:

export function isInCompareableArray<T>(compareable:Compareable<T>, arr:Array<T>) : boolean ...