불변성
불변성이란 데이터가 최초 생성된 후 그 상태를 변경할 수 없는 성질이다. 불변성을 지키는 것은 예측이 가능하고, 안정적인 코드를 만드는데 중요하다. 그런데, 객체와 배열같은 참조 타입은 가변적이다. 예를 들어, 객체의 프로퍼티 값을 변경할 수 있다. 다음과 같이 말이다.
person.name = "yerang"
만약 불변성을 유지하고 싶다면, 객체의 프로퍼티를 직접 변경하지 않고 새로운 객체를 생성하는 방식을 사용해야 한다. 예를 들면 다음과 같다.
const person = { name: "yerang", age: 27 };
// 불변성 유지
const updatedPerson = { ...person, age: 28 };
추가적으로 스프레드 연산자, Object.assign()
, Object.freeze()
와 같은 내장 기능을 활용하거나, Immutable js와 같은 도구를 활용할 수 있다.
불변성을 유지하면 성능 측면에서 안좋지 않나?
업데이트마다 새로운 객체를 생성해야 하므로 메모리 비용이 약간 증가할 수 있다. 하지만 이 비용은 일반적으로 무시할만한 수준이고, 불변성 유지는 장기적으로 유지보수성과 안정성을 크게 향상시킨다.
그리고, 불변성은 데이터의 변경 흐름을 추적하기 쉽게 만들어준다. 가변 데이터를 이곳저곳에서 수정해가며 사용하면 데이터가 언제, 어디서 변경되었는지 파악하기 어렵다. 반면에, 불변성을 지키면 데이터 변경이 항상 새로운 객체 생성을 통해 이루어지므로 변경 지점을 명확하게 추적할 수 있다.
'Language > TypeScript' 카테고리의 다른 글
[TypeScript] 타입 단언 (0) | 2025.04.22 |
---|---|
[TypeScript] 객체 타입 간 호환성 (0) | 2025.04.22 |
[TypeScript] 타입 호환성 : 업캐스팅과 다운캐스팅 (0) | 2025.04.11 |
[TypeScript] Any, Unknown 타입 (0) | 2025.04.04 |
[TypeScript] enum 열거형 사용하기 (0) | 2025.04.04 |