【问题标题】:Typescript generic interface functionTypescript 通用接口函数
【发布时间】:2018-03-21 21:23:33
【问题描述】:

我的通用接口函数有点问题。我想我在同一点上看了太久......有人可以告诉我我做错了什么吗?

界面:

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

我有点迷路了。你能帮忙吗?

【问题讨论】:

    标签: typescript generics interface


    【解决方案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&lt;T&gt;(或简单的T[])而不是Array&lt;Compareable&lt;T&gt;&gt;

    【讨论】:

    • :D 谢谢!刚刚自己看到了......我想我需要休息一下^^
    【解决方案2】:

    哦,我的……真丢脸 :) 我失去了瞄准镜。

    这行得通:

    功能:

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

    【讨论】:

      猜你喜欢
      • 2022-01-21
      • 1970-01-01
      • 2018-11-01
      • 1970-01-01
      • 2020-06-09
      • 2020-04-09
      • 2021-06-09
      • 2021-12-07
      • 1970-01-01
      相关资源
      最近更新 更多