Web Basic · Data Shape

구조 분해와 스프레드의 데이터 복사 경계

구조 분해와 스프레드는 객체·배열의 모양을 읽기 쉽게 다루지만, 얕은 복사라는 한계를 이해해야 상태 변경 버그를 피할 수 있다.

01

필드 추출

객체나 배열에서 필요한 값만 선언부에서 바로 꺼낸다.

02

이름 조정

충돌하는 필드는 alias를 주고 기본값으로 undefined를 보완한다.

03

새 구조 생성

스프레드로 기존 값을 유지하면서 일부 필드만 바꾼 객체를 만든다.

04

중첩 복잡도

깊은 내부 객체는 여전히 같은 참조라 별도 복사가 필요하다.

Object
필드 기반 추출 const { id, name } = user처럼 필요한 값만 읽음
없는 값은 undefined
Array
위치 기반 추출 const [first, second] = list처럼 순서가 의미
순서 변경에 취약
Rest
나머지 수집 const { password, ...safeUser }로 제외 후 모음
민감 정보 처리 의도 명확
Spread
얕은 복사 { ...state, count: state.count + 1 }
중첩 객체는 따로 복사

기본값 · 얕은 복사 · 가독성 점검

기본값 optional 필드는 기본값과 null 처리 기준을 정한다.
얕은 복사 중첩 배열·객체를 직접 변경하지 않는다.
가독성 한 줄 구조 분해가 지나치게 길면 단계로 나눈다.
민감 필드 rest로 제외한 값이 로그나 응답에 다시 섞이지 않는다.

중첩 업데이트

const next = {
  ...user,
  profile: { ...user.profile, nickname: 'min' },
};