代码之家  ›  专栏  ›  技术社区  ›  Lev Kuznetsov

获取typescript中的最后一个函数参数

  •  0
  • Lev Kuznetsov  · 技术社区  · 7 年前

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

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

    然而,typescript中的同一个构造给了我:

    error TS2501: A rest element cannot contain a binding pattern.
    
    function (...{length, [length - 1]: next}) {
                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    

    1 回复  |  直到 7 年前
        1
  •  1
  •   shohrukh    7 年前

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

    结果是,当我们尝试同时在destruction和spread操作符中使用绑定模式时,我们会得到一个错误:

    enter image description here

    当前在TS诊断消息文件中有一个显式错误 A_rest_element_cannot_contain_a_binding_pattern_2501

    open Pull Request 在TypeScript repo中,它可能会解决这个“问题”(不确定这是一个问题还是其他问题)。

    但是你可以选择这种方法来完成你的任务:

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