繁体   English   中英

了解TypeScript 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM