2017-10-10 4 views
-1

J'ai un petit problème avec ma fonction d'interface générique. Je suppose que j'ai regardé trop longtemps sur le même point ... quelqu'un peut-il me montrer ce que je fais mal?Fonction d'interface générique de type machine à écrire

Interface:

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

:

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

    return false; 
} 

appel:

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

isInCompareableArray<DateRef>(dateRef, arr); 

Erreur:

ERROR in function ... if (compareable.equals(i)) return true; 
...: Argument of type 'Compareable<T>' is not assignable to parameter of type 'T'. 

Je suis un peu perdu ici. Pouvez-vous aider?

Répondre

1

Il devrait être:

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

    return false; 
} 

Lorsque le tableau est de type Array<T> (ou simplement T[]) au lieu de Array<Compareable<T>>.

+0

: D Merci! Je l'ai juste vu par moi-même ... je suppose que j'ai besoin d'une pause ^^ –

0

Oh mon ... honte à moi :) J'ai perdu la portée.

Cela fonctionne:

fonction

:

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