Rest

Array Rest

Les "rest parameters" sont l'équivalents des paramètres variadiques dans d'autres langages.
La fonction add ci-dessous peut prendre une infinité de paramètres qui seront mises dans l'Array valueList.
1
const add = (...valueList) => {
2
return valueList.reduce((total, value) => total + value, 0);
3
};
4
​
5
add(0, 1, 2, 3); // 6
Copied!
Il vaut mieux éviter ce type d'usage du "rest". Cela réduit l'extensibilité de la fonction et il est préférable de prendre un paramètre de type Array.
1
const add = (valueList) => {
2
return valueList.reduce((total, value) => total + value, 0);
3
};
4
​
5
add([1, 2, 3]); // 6
Copied!
En revanche, cela peut s'avérer très pratique dans des cas de wrapping ou de décoration etc...
1
const wrapper = (funk, ...args) => {
2
console.log(`Calling function with ${args.length} arguments.`);
3
return funk(...args);
4
};
5
​
6
wrapper(add, 1, 2, 3);
Copied!

Object Rest

La même syntaxe peut être utilisée avec le "destructuring" d'un objet :
1
const user = {
2
firstName: 'Foo',
3
lastName: 'BAR',
4
5
phoneNumber: '123'
6
};
7
​
8
const { firstName, lastName, ...remainingProperties } = user;
9
​
10
console.log(remainingProperties); // { email: '[email protected]', phoneNumber: '123' }
Copied!
​
Copier le lien