接口签名不匹配

时间:2017-06-20 03:03:45

标签: typescript

我无法弄清楚为什么我会收到错误:

export interface IGrid {
    (gridCell: GridCell): boolean
}

在我班上我有

foo(gridCell: GridCell): boolean {
    return true;
}

错误:

  

Class' X'错误地实现了界面' IGrid'。输入' X'   不提供签名匹配'(gridCell:GridCell):boolean'

更新

我已经在界面的gridFormat签名中添加了一个参数。

export interface IGrid {
    gridFormat(gridCell: GridCell, x: number): boolean
}

类别:

gridFormat(gridCell: GridCell): boolean {
    return true;
}

现在问题是没有错误,该类没有使用x: number参数实现该功能。如何让界面正确地要求该功能。

1 个答案:

答案 0 :(得分:2)

您的IGrid界面是function interface,表示界面描述了一个功能。您可以像这样实现它:

let yourFunc: IGrid = (gridCell: GridCell): boolean => {
    return true;
};

如果你想在一个类中实现它,你的接口应该声明一个带有函数成员的class type interface

export interface IGrid {
    foo(gridCell: GridCell): boolean
}

class Grid implements IGrid {
    foo(gridCell: GridCell): boolean {
        return true;
    }
}

Re:为什么在实现缺少接口中定义的参数时没有错误:

这是设计的。请参阅this issueTypeScript FAQ