0Pricing
TypeScript Academy · 강의

배열과 객체의 전개

정확한 타입을 유지하면서 값을 전개합니다.

배열과 객체의 전개은(는) CoddyKit의 무료 TypeScript Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 TypeScript Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. TypeScript Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

값 전개하기

전개 연산자 ...는 배열의 요소나 객체의 속성을 새 배열 또는 객체에 복사합니다. TypeScript는 결과 타입을 정확하게 추적하며, 이는 불변 업데이트에 핵심적입니다.

배열 전개

두 배열을 새 배열에 전개하여 연결하십시오. 결과의 요소 타입은 두 원본 요소 타입의 유니언이 됩니다.

const a = [1, 2]
const b = [3, 4]
const all = [...a, ...b]
console.log(all) // [1, 2, 3, 4]

전개와 리터럴 섞기

전개 요소와 개별 값을 번갈아 배치할 수 있습니다. 작성한 순서가 정확하게 유지됩니다.

const middle = [2, 3]
const nums = [1, ...middle, 4]
console.log(nums) // [1, 2, 3, 4]

전개 요소의 타입

전개하는 원본의 요소 타입이 서로 다르면 결과는 해당 타입들의 유니언으로 이루어진 배열이 됩니다. 타입을 직접 지정하거나 추론에 맡기십시오.

const ns: number[] = [1, 2]
const ss: string[] = ["a"]
const mixed = [...ns, ...ss] // (number | string)[]
console.log(mixed)

객체 전개

객체 전개는 열거 가능한 고유 속성을 새 객체에 복사합니다. 결과 타입은 원본 형태들을 병합합니다.

const base = { id: 1, name: "Ada" }
const extended = { ...base, active: true }
console.log(extended) // { id: 1, name: 'Ada', active: true }

전개로 속성 덮어쓰기

키가 충돌하면 마지막 항목이 적용됩니다. 객체를 전개한 다음 특정 필드를 덮어쓰십시오. 이것이 불변 업데이트의 기본 방식입니다.

const user = { name: "Ada", age: 36 }
const older = { ...user, age: 37 }
console.log(older.age) // 37

순서가 적용되는 값을 결정합니다

속성의 우선순위는 원본 순서를 따릅니다. 덮어쓸 속성을 전개 뒤에 배치하면 해당 값이 적용되고, 앞에 배치하면 전개된 값이 이를 덮어씁니다.

const defaults = { theme: "light", size: "m" }
const result = { theme: "dark", ...defaults }
console.log(result.theme) // light — spread came last

덮어쓴 속성의 타입

덮어쓰기로 속성의 타입이 바뀌면 결과 타입에도 새 타입이 반영됩니다. TypeScript는 가장 최근에 나온 항목으로 타입의 범위를 좁힙니다.

const obj = { value: 1 as number }
const updated = { ...obj, value: "now a string" }
// updated.value is string
console.log(updated.value.toUpperCase())

스프레드는 얕은 복사입니다

스프레드는 한 단계까지만 복사합니다. 중첩된 객체는 참조로 공유되므로 중첩된 필드를 변경하면 두 복사본 모두에 영향을 줍니다. 더 깊게 복사하려면 중첩된 객체도 스프레드하십시오.

const a = { nested: { x: 1 } }
const b = { ...a }
b.nested.x = 99
console.log(a.nested.x) // 99 — shared reference

스프레드와 읽기 전용

readonly 배열이나 객체를 스프레드하면 새로 생성된 변경 가능한 복사본이 만들어집니다. 새로운 값을 만들기 때문에 readonly 수정자는 스프레드된 결과에 전달되지 않습니다.

const frozen: readonly number[] = [1, 2, 3]
const copy = [...frozen] // number[], mutable
copy.push(4)
console.log(copy.length) // 4

불변 업데이트 패턴

스프레드는 변경 없이 상태를 업데이트하는 관용적인 방법입니다. 이전 객체를 복사하고, 변경된 필드를 덮어쓴 다음, 새 객체를 반환합니다.

interface State { count: number; name: string }
function increment(s: State): State {
  return { ...s, count: s.count + 1 }
}
console.log(increment({ count: 1, name: "x" }))

빠른 확인

스프레드 타입과 우선순위에 대한 이해도를 테스트해 보십시오.

복습

스프레드는 배열 요소나 객체 속성을 새 값으로 복사합니다. 배열 스프레드는 유니언 요소 타입으로 이어 붙여지고, 객체 스프레드는 구조를 병합합니다. key가 충돌하면 마지막 항목이 우선합니다. 스프레드는 얕은 복사이므로 중첩된 객체는 계속 공유되며, readonly 원본에서도 새롭고 변경 가능한 값이 생성됩니다. 이는 관용적인 불변 업데이트 패턴입니다.

자주 묻는 질문

“배열과 객체의 전개” 강의는 무료인가요?

네 — “배열과 객체의 전개” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 TypeScript Academy 강의 전체를 잠금 해제할 수 있습니다. TypeScript Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“배열과 객체의 전개”에서 뭘 배우나요?

정확한 타입을 유지하면서 값을 전개합니다. 브라우저에서 직접 실행하는 실습 코드로 TypeScript Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

TypeScript Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 TypeScript Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“배열과 객체의 전개” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 TypeScript Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 TypeScript Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 함수의 나머지 매개변수
  2. 배열과 객체의 전개
  3. 튜플의 나머지 요소
  4. 가변 인자 함수에 타입 지정하기
← TypeScript Academy(으)로 돌아가기