[TypeScript] 깊은 복사와 얕은 복사

어느 개발자·2021년 5월 26일
0

TypeScript

목록 보기
5/5
post-thumbnail

프로그래밍 언어에서 복사에는 깊은 복사(deep-copy)얕은 복사(shallow-copy) 두 종류가 있다.

깊은 복사

깊은 복사는 대상 변수값이 바뀔 때 원본 변숫값은 유지된다. 아래 코드는 깊은 복사의 예이다.

let original = 1
let copied  = original
copied += 2
console.log(original, copied) // 1 3

타입 스크립트에서는 numberboolean 타입은 깊은 복사 형태로, 객체배열은 얕은 복사 방식으로 동작한다.

얕은 복사

아래 코드를 실행해보면 배열은 얕은 복사로 동작하며, 원본 배열이 수정되어 있는 것을 확인할 수 있다.

const originalArray = [5, 3, 9, 7]
const shallowCopiedArray = originalArray
shallowCopiedArray[0] = 0
console.log(originalArray, shallowCopiedArray) // [0, 3, 9, 7] [0, 3, 9, 7]

전개 연산자와 얕은 복사

전개 연산자를 사용하여 배열을 복사하면 깊은 복사를 할 수 있다.

const oArray = [1, 2, 3, 4]
const deepCopiedArray = [...oArray]
deepCopiedArray[0] = 0
console.log(oArray, deepCopiedArray) // [1, 2, 3, 4] [0, 2, 3, 4]

정리

number, boolean, 전개 연산자 -> 깊은 복사
객체, 배열 -> 얕은 복사

0개의 댓글