我的通用接口功能有点问题。我想我在同一点上看了太长时间......有人可以告诉我我做错了什么吗?
接口:
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'.
我在这里迷失了方向。你能帮忙吗?
答案 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 ...