有没有办法将数组项直接映射到打字稿中的函数参数?

Is there a way to map array items to function parameters in typescript directly?

我经常遇到这样的情况:我得到一个带参数的数组,必须手动将数组分成几个部分。例如

Observable.combineLatest(obs1$, obs2$, obs3$).subscribe((data) => {
  let fancyArg = data[0];
  let epicArg = data[1];
  let wonderfulArg = data[2];
})

有这样的捷径吗

Observable.combineLatest(obs1$, obs2$, obs3$)
  .subscribe([fancyArg, epicArg, wonderfulArg] => { //something like this
    ...                                             //would be great
  })

我知道有最后一个参数作为函数的选项

Observable.combineLatest(obs1$, obs2$, obs3$, 
  (arg1, arg2, arg3) => {
    return {
      fancyArg:arg1, 
      epicArg:arg2, 
      wonderfulArg:arg3
    }
  })
  .subscribe((args) => {
    ...
  })

但这也很不方便。我寻找一种更通用的方法(也可以通过 bindCallback 和其他函数使用它)

Javascript 有 destructuring assignment,您可以在参数列表中使用它来解包数组。示例:

function takeAnArray([firstItem, secondItem, thirdItem]) {
  console.log(firstItem, secondItem, thirdItem);
}

takeAnArray([1, "a", false]);

所以你在第二个片段中几乎是正确的。您只需要在参数列表周围添加一对括号:

Observable.combineLatest(obs1$, obs2$, obs3$)
  .subscribe(([fancyArg, epicArg, wonderfulArg]) => {
    // Here, fancyArg is the first array element,
    // epicArg is the second
    // wonderfulArg is the third
  })

documentation for combineLatest 甚至在其第一个示例中展示了这种语法。