깊은 복사와 얕은 복사
- 프로그래밍 언어에서 어떤 변숫값을 다른 변숫값으로 설정하는 것을 복사라 표현하며 ‘깊은복사(deep-copy)’와 ‘얕은 복사(shallow-copy)’ 두 종료가 있음.
- 순수 함수를 구현할 때는 매개변수가 불변성을 유지해야 하므로, 매개변수를 가공하려 할때 깊은 복사를 실행하여 매개변수값이 변경되지 않게함.
Deep-Copy Example
- 깊은 복사의 코드를 보면 2행의 Copied변수는 01행의 original 변숫값을 복사한되 2를 더한다. 그러나 original 변수값은 변하지 않으며 이러한 복사가 Deep-Copy라고 한다.
- TypeScript에서 number와 boolean타입은 깊은 복사 형태로 동작
let original = 1
let copied = original
copied += 2
console.log(original, copied) // 1 3
그러나 TypeScript에서는 객체와 배열은 얕은 복사방식으로 동작.
const originalArray = [5,3,9,7]
const shallowCopedArray = originalArray
shallowCopedArray[0] = 0
console.log(originalArray, shallowCopedArray) // [0,3,9,7] [0,3,9,7]