2017-10-10 64 views
-1

我的通用接口函數有一點問題。我想我在同一點上看了太久......有人能告訴我什麼Iam做錯了嗎?Typescript通用接口函數

接口:

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'. 

Iam有點失落。你能幫我嗎?

回答

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>>

+0

:d謝謝!剛剛看到我自己...猜我需要休息^^ –

0

哦,我的......恥辱在我:)我失去了範圍。

這工作:

功能:

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