获取打字稿中的最后一个函数参数

时间:2018-09-07 19:43:11

标签: node.js typescript destructuring

我正在尝试解构仅关心传入的最后一个参数的函数的参数,并将其值绑定到变量next;以下在纯js节点10中正常工作:

> function f(...{length, [length - 1]: next}) { console.log(next) }
> f(1,2,3,4)
4

但是打字稿中的相同构造给了我

error TS2501: A rest element cannot contain a binding pattern.

function (...{length, [length - 1]: next}) {
             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~

我该如何解决?

1 个答案:

答案 0 :(得分:1)

一个非常有趣的问题,因为基本上,“ TS是JS的超集”这样的语句在这里不起作用。

事实证明,当我们尝试同时在销毁和散布运算符中使用绑定模式时,会出现错误:

enter image description here

当前,TS诊断消息文件中存在A_rest_element_cannot_contain_a_binding_pattern_2501

的显式错误。

还有一个open Pull Request,并且在TypeScript存储库中,它可能会解决此“问题”(不确定是问题还是其他问题)。

但是您始终可以为您的任务选择这种方法:

function f(...args) {
    console.log(args[args.length - 1]);
}