【发布时间】:2014-01-31 13:11:32
【问题描述】:
我正在使用 TypeScript 编写一个小型应用程序。它有一个上下文菜单模块,它有一个名为show的方法,声明如下:
export var show = function (position: { top: number; left: number; },
optionList: { [name: string]: (...params: any[]) => any })
所以基本上我想在某个位置显示菜单并传递一个将字符串映射到函数的对象 - 这些将是我的菜单中的项目和分配给它们的回调。我希望这些回调接受任意数量的任何类型的参数 - 这就是我理解我在这里使用的其余参数的方式。但是,当我尝试像这样调用我的函数时:
menu.show(
{
top: nativeEvent.clientY,
left: nativeEvent.clientX + 5
},
{
"Add elem...": (e: JQueryEventObject) => { }
});
我收到一条错误消息,提示 Call signatures of types '(e: JQueryEventObject) => void' and '(...params: any[]) => any' are incompatible 和 Call signature expects 0 or fewer parameters.
谁能告诉我这里发生了什么?因为事实证明我完全不理解剩余参数的概念。为什么编译器告诉我函数需要 0 个参数,我如何让它需要任意数量的参数?
【问题讨论】:
标签: typescript