구조 분해와 스프레드 판단
값을 꺼낼지, 새 객체나 배열을 만들지, 중첩 값을 안전하게 복사할지에 따라 문법 선택이 달라진다.
| 질문 | 쓸 문법 | 좋은 예 | 위험 신호 |
|---|---|---|---|
| 필드만 꺼내나 | 구조 분해 | const { id } = item | 필드가 없을 때 처리 없음 |
| 이름을 바꾸나 | alias | { id: itemId } | 변수 의미가 흐림 |
| 나머지를 보관하나 | rest | { id, ...rest } | rest도 얕은 복사임 |
| 새 값을 합치나 | spread | { ...prev, done:true } | 덮어쓰기 순서 착각 |
| 깊은 복사가 필요한가 | structuredClone 등 별도 처리 | 중첩 변경 방지 | spread가 deep copy라고 오해 |
스프레드는 편리한 복사 문법이지만 중첩 객체까지 자동으로 새로 만들지는 않는다.