![](/img/trans.png)
[英]typescript variable number of parameters in function interface definition 0.9.5
[英]Understanding rest parameters in TypeScript 0.9.5
我在TypeScript中编写一个小型应用程序。 它具有一个上下文菜单模块,该模块具有一个名为show
的方法,声明如下:
export var show = function (position: { top: number; left: number; },
optionList: { [name: string]: (...params: any[]) => any })
所以基本上我想在特定位置显示菜单,并传递一个将字符串映射到函数的对象-这些将是菜单中的项目以及分配给它们的回调。 我希望这些回调函数接受任意数量的任何类型的参数-这就是我理解此处使用的rest参数的方式。 但是,当我尝试像这样调用我的函数时:
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.
Call signatures of types '(e: JQueryEventObject) => void' and '(...params: any[]) => any' are incompatible
并且Call signature expects 0 or fewer parameters.
谁能告诉我这是怎么回事? 因为事实证明,我完全不了解rest参数的概念。 为什么编译器告诉我该函数期望0个参数,如何使它期望任何数量的参数?
由于rest参数暗示所有成员都是可选的,因此传入的函数还必须将其所有成员都是可选的(e?: JQueryEventObject) => { }
,例如:
var show = function (position: { top: number; left: number; },
optionList: { [name: string]: (...params: any[]) => any }){}
show(
{
top: 1,
left: 5
},
{
"Add elem...": (e?: any) => { } // Notice e is optional
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.