类型 '<T>(array: T[], pred: (x: T) => boolean, index: number) => void' 不可分配给类型 '() =>



>我正在尝试为 Array 创建一个扩展方法。

这是我创建的:

interface Array<T> {
moveServiceBranchInArray(): void;
}
Array.prototype.moveServiceBranchInArray = function<T> (array: T[], pred: (x: T) => boolean, index: number): void 
{ 
const curPos: number = array.findIndex(pred);
index = Math.max(Math.min(index, array.length - 1), 0);
if (curPos < 0) {
return;
}
[array[curPos], array[index]] = [array[index], array[curPos]];
}

不幸的是我收到错误

"类型 '(array: T[], pred: (x: T( => boolean, index: number( => void' 不能分配给类型 '(( => void'。

如标题所示。 什么给,帮助赞赏。

您的接口有一个不带参数的方法,因此() => void,但在实现中您会得到一些参数,特别是带有签名(array: T[], pred: (x: T) => boolean, index: number) => void的参数。

这正是编译器试图告诉您的。

修复接口以使其与您的实现匹配应该就足够了。

您应该在接口中指定函数参数,如下所示:

interface Array<T> {
moveServiceBranchInArray(array: T[], pred: (x: T) => boolean, index: number): void;
}
Array.prototype.moveServiceBranchInArray = function<T> (array: T[], pred: (x: T) => boolean, index: number): void 
{ 
const curPos: number = array.findIndex(pred);
index = Math.max(Math.min(index, array.length - 1), 0);
if (curPos < 0) {
return;
}
[array[curPos], array[index]] = [array[index], array[curPos]];
}

相关内容

  • 没有找到相关文章

最新更新