typescript - 类型 '(array: T[], pred: (x: T) => boolean, index: number) => void' 不能分配给类型 '() => 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
。
这正是编译器试图告诉你的。
修复接口以使其与您的实现相匹配就足够了。
推荐阅读
- sql - 是否有替代子选择上的多个左连接的替代方法?
- laravel - 如何访问从 laravel 6.x 到 vuejs 的特定变量(我尝试动态实现鼠标悬停)
- html - 无法将内容添加到下一页 css html
- javascript - 如何使按钮单击只执行一次代码
- arrays - 如何在 Swift 中将 Floats 的 ContiguousArray 转换为字节数组?
- unit-testing - 带有方法调用的父路由的 Ember 测试
- javascript - 尝试遍历名为 strIngredients 1-15 的对象中的项目
- apache-camel - Apache Camel AMQ - 无法将文件写入队列 - 对等/客户端重置连接
- django - 无限列表过滤在 Django 应用程序中不起作用
- eslint - `no-unused-vars` 的误报