
불변성은 데이터의 원본을 유지하는 것이다. 원본을 수정 불가 상태로 만드는 방법(Object.freeze(), const 사용)과 복사본을 만들어서 데이터를 다루는 방법(스프레드 연산자, 불변성을 유지하는 메서드 : map(), filter() 사용)이 있다.
불변성(Immutability)이란?
데이터의 원본을 유지하려는 개념이다.
불변성이 중요한 이유
예측 가능성
복사본을 생성하여 데이터를 다루므로 언제 어떻게 변화했는지 예측할 수 있다.
버그 방지
의도치 않은 변경을 방지한다.
함수형 프로그래밍
순수 함수와 같은 함수형 프로그래밍 개념과 잘 어울린다.
동시성 제어
여러 스레드가 동시에 읽어도 동일한 데이터를 유지하여 동시성 문제 해결에 도움이 된다.
이력 관리 및 되돌리기 용이성
상태 변경 이력을 저장하면 이전 상태로 되돌릴 수 있다.
불변성을 유지하는 방법
데이터 복사
스프레드 연산자를 사용한다.
//배열
const originalArray = [1, 2, 3];
const copiedArray = [...originalArray]; // [1, 2, 3]
//객체
const originalObject = { name: 'John', age: 30 };
const copiedObject = { ...originalObject }; // { name: "John", age: 30 }
라이브러리 활용
Immutable.js, Immer, Mori
언어의 특성 활용
const
Object.freeze()
map(), filter() 등