0Pricing
TypeScript Academy · 강의

튜플의 나머지 요소

튜플 타입 내부에서 나머지 요소를 사용합니다.

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

가변 길이 튜플

튜플은 일반적으로 길이가 고정되어 있지만, 나머지 요소를 사용하면 하나의 위치가 원하는 개수의 항목을 받을 수 있습니다. 이를 통해 일부는 고정되고 일부는 가변적인 데이터를 표현할 수 있습니다.

끝에 오는 나머지 요소

[string, ...number[]]이라고 쓰면 문자열 하나 다음에 숫자가 0개 이상 온다는 뜻입니다. 첫 번째 슬롯은 고정되고 나머지 부분은 자유롭게 늘어납니다.

type Row = [string, ...number[]]
const r: Row = ["scores", 9, 8, 7]
console.log(r[0], r.length) // scores 4

고정된 부분은 필수입니다

앞쪽의 고정 요소는 반드시 있어야 합니다. 나머지 부분은 비어 있을 수 있지만 고정된 슬롯은 생략할 수 없습니다.

type Row = [string, ...number[]]
const min: Row = ["label"] // ok, zero numbers
// const bad: Row = [] // Error: missing string
console.log(min)

앞에 오는 나머지 요소

나머지 요소가 처음에 오고 그 뒤에 고정 요소가 올 수도 있습니다. 이를 통해 가변적인 앞부분 뒤에 고정된 뒷부분이 오는 형태를 표현할 수 있습니다.

type Trailing = [...number[], boolean]
const t: Trailing = [1, 2, 3, true]
console.log(t[t.length - 1]) // true

중간에 오는 나머지 요소

나머지 요소는 고정된 앞 요소와 뒤 요소 사이의 중간에 올 수도 있습니다. TypeScript는 양쪽 끝에서 어떤 위치가 고정되는지 알아냅니다.

type Middle = [string, ...number[], boolean]
const m: Middle = ["start", 1, 2, false]
console.log(m[0], m[m.length - 1]) // start false

튜플당 나머지 요소 하나만 허용됩니다

튜플에는 나머지 요소를 최대 하나만 포함할 수 있습니다. 나머지 요소가 두 개이면 요소 위치가 모호해지므로 허용되지 않습니다.

// type Bad = [...string[], ...number[]] // Error: only one rest allowed
type Ok = [string, ...number[]]
const o: Ok = ["x", 1]
console.log(o)

나머지 튜플 구조 분해하기

구조 분해는 튜플의 나머지 요소와 정확히 맞물립니다. 고정된 바인딩은 고정 슬롯을 차지하고, 나머지 바인딩은 가변적인 부분을 타입이 지정된 배열로 받습니다.

type Row = [string, ...number[]]
const row: Row = ["scores", 9, 8]
const [label, ...values] = row
console.log(label, values) // scores [9, 8]

이름이 지정된 튜플 요소

문서화를 위해 튜플 위치에 이름을 지정할 수 있습니다. 레이블은 도구 설명과 시그니처에 표시되지만 실행 시 값은 변경하지 않습니다.

type Range = [start: number, end: number]
const span: Range = [0, 10]
console.log(span[0], span[1]) // 0 10

나머지 요소의 레이블

나머지 요소에도 레이블을 지정할 수 있습니다. 특히 함수 매개변수 튜플에서 읽기 쉬운 힌트를 제공할 때 유용합니다.

type Args = [command: string, ...flags: string[]]
const a: Args = ["build", "--watch", "--minify"]
console.log(a[0], a.slice(1))

매개변수 목록으로 사용하는 나머지 튜플

나머지 요소가 있는 튜플은 함수의 매개변수 목록을 설명할 수 있으므로, 스프레드를 통해 고정 매개변수 뒤에 가변 인자가 오는 정확한 시그니처를 만들 수 있습니다.

type Params = [name: string, ...scores: number[]]
function report(...args: Params): string {
  const [name, ...scores] = args
  return name + ": " + scores.join(",")
}
console.log(report("Ada", 9, 8))

나머지 튜플이 중요한 이유

나머지 튜플은 일반 배열로는 표현할 수 없는 형태를 표현합니다. 필수 헤더와 가변 본문, 가변 본문과 필수 푸터, 또는 이 둘을 모두 표현할 수 있습니다. 나머지 튜플은 가변 인자 함수의 타입을 지정하는 핵심 기반입니다.

type CSVRow = [id: number, ...fields: string[]]
const row: CSVRow = [1, "Ada", "Engineer"]
console.log(row[0], row.slice(1))

빠른 확인

튜플의 나머지 요소에 대한 이해도를 테스트해 보십시오.

복습

튜플의 나머지 요소(...T[])를 사용하면 하나의 위치가 원하는 개수의 항목을 받을 수 있고, 앞뒤의 고정 요소는 계속 필수로 유지됩니다. 나머지 요소는 끝이나 처음 또는 중간에 올 수 있지만, 튜플당 하나만 허용됩니다. 구조 분해는 이러한 형태에 맞춰 동작하고, 레이블은 읽기 쉬운 힌트를 추가하며, 나머지 튜플은 가변 인자 함수의 타입을 지정하는 기반입니다.

자주 묻는 질문

“튜플의 나머지 요소” 강의는 무료인가요?

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

“튜플의 나머지 요소”에서 뭘 배우나요?

튜플 타입 내부에서 나머지 요소를 사용합니다. 브라우저에서 직접 실행하는 실습 코드로 TypeScript Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

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

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

“튜플의 나머지 요소” 강의는 얼마나 걸리나요?

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

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

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

이 강의의 모든 강의

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