QUESTION: Що таке immutability?
Імутабельність в JavaScript — це концепція програмування, згідно з якою створений об'єкт, масив або примітив не може бути змінений після свого створення. Якщо розробнику потрібно оновити якісь дані в такому об'єкті, він не здійснює мутацію вихідного стану напряму.
Замість цього створюється абсолютно новий об'єкт, у який копіюються старі властивості та перезаписуються тільки ті поля, які потребують змін. На практиці це реалізується за допомогою оператора поширення.
Для цього використовується простий синтаксис вигляду const newObj = { ...obj, key: newVal }, який дозволяє зібрати новий об'єкт за частки секунди. При цьому старий об'єкт зберігається в незмінному вигляді для історії станів або налагодження.
Ручне створення глибоких копій складних структур даних може бути втомливим і схильним до помилок, тому для зручності розробники часто використовують спеціалізовані бібліотеки. Чудовим прикладом є бібліотека Immer, яка дозволяє писати код так, ніби ви змінюєте дані напряму, але під капотом створює імутабельні копії.
Дотримання принципу імутабельності критично важливе для сучасних бібліотек і фреймворків керування станом, таких як React і Redux. Саме незмінність даних дозволяє компонентам миттєво і без зайвих витрат визначати факт зміни стану, порівнюючи посилання на об'єкти, що безпосередньо впливає на швидкість рендерингу та стабільність користувацького інтерфейсу.