À retenir
- S'écrit généralement avec trois points consécutifs (
...). - Permet de copier ou fusionner des données de façon élégante et concise.
- Favorise l'immuabilité (créer de nouvelles données au lieu de modifier les anciennes).
L'opérateur d'étalement est une syntaxe de programmation qui permet de "déballer" les éléments d'une structure de données (comme une liste ou un objet) pour les insérer individuellement dans un autre contenant. On peut l'imaginer comme le fait de vider un sac de courses sur un plan de travail pour disposer chaque article séparément plutôt que de manipuler le sac entier.
Étymologie
Traduction directe de l'anglais spread operator. Le terme s'est généralisé avec l'évolution des langages de script, notamment JavaScript lors de la mise à jour majeure ES6 (2015), pour décrire visuellement l'action d'étaler des données compactées.
Exemples d'usage
- Fusionner deux tableaux de noms en un seul :
[...classeA, ...classeB]. - Créer une copie d'un profil utilisateur en modifiant uniquement son adresse.
- Envoyer une liste de nombres à une fonction qui attend des arguments séparés (ex:
Math.max(...mesNotes)).
Cas d'usage
Il est omniprésent dans le développement web moderne (JavaScript, TypeScript) et en Python (via l'astérisque *). On l'utilise pour manipuler des tableaux, fusionner des configurations d'objets ou faciliter le passage de paramètres complexes dans des fonctions sans écrire de boucles répétitives.
Bonnes pratiques
Attention à la copie superficielle (shallow copy) : si vous étalez un objet qui contient lui-même d'autres objets, ces derniers ne sont pas dupliqués mais simplement pointés. Une modification sur l'original pourrait alors impacter la copie. Pour des données très imbriquées, une copie profonde est préférable.
Synonymes
Antonymes
Conseil
Quand vous débutez, utilisez-le pour remplacer les méthodes anciennes comme concat() ou Object.assign(). Votre code sera beaucoup plus lisible et plus proche du langage naturel.
Questions fréquentes
Quelle est la différence avec l'opérateur de reste (rest) ?
C'est la même syntaxe (...), mais l'étalement 'déballe' le contenu dans une structure, tandis que le 'reste' 'regroupe' plusieurs éléments isolés dans une seule liste.
Est-ce que cela fonctionne sur tous les types de données ?
Non, cela fonctionne uniquement sur les objets 'itérables' comme les tableaux, les chaînes de caractères ou les objets simples (selon le langage).