有没有办法将数组项直接映射到打字稿中的函数参数?
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
甚至在其第一个示例中展示了这种语法。
我经常遇到这样的情况:我得到一个带参数的数组,必须手动将数组分成几个部分。例如
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
甚至在其第一个示例中展示了这种语法。