简体   繁体   English

打字稿通用接口函数

[英]Typescript generic interface function

I have a little problem with my generic interface function.我的通用接口函数有点问题。 I guess I watched too long on the same point... can someone please show me what Iam doing wrong?我想我在同一点上看得太久了……有人可以告诉我我做错了什么吗?

Interface:界面:

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

function:功能:

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

  return false;
}

call:称呼:

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

isInCompareableArray<DateRef>(dateRef, arr);

Error:错误:

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

Iam bit lost here.我有点迷失在这里。 Can you help?你能帮我吗?

It should be:它应该是:

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

    return false;
}

Where the array is of type Array<T> (or simply T[] ) instead of Array<Compareable<T>> .其中数组的类型为Array<T> (或简单的T[] )而不是Array<Compareable<T>>

Oh my... shame on me :) I lost the scope.哦,我的......我很惭愧:) 我失去了范围。

This works:这有效:

function:功能:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM