我正在尝试为数组创建扩展方法。
这是我创建的:
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)=>布尔值,索引:数字)=> void'不能分配给类型'()=> void'。”
如标题所示。什么给予,帮助赞赏。
您的接口有一个不带参数的方法,因此不带() => void
,但是在实现中,您会得到一些参数,特别是带有签名(array: T[], pred: (x: T) => boolean, index: number) => void
。
这正是编译器试图告诉您的。
修复接口以使其与您的实现相匹配就足够了。