我正在用TypeScript編寫一個小應用程序。它有一個上下文菜單,其中有一個叫show
方法的模塊,聲明如下:瞭解TypeScript 0.9.5中的其餘參數
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個參數,我該如何讓它期望任何數量的參數?
對。我看着規範,不知何故錯過了。 「比較調用或構造簽名時,參數名稱將被忽略,並且其餘參數對應於其餘參數元素類型的可選參數的無限擴展。」非常感謝。 –