OPEN HYPER STEP
← 목록으로 (TypeScript)
TS · 13 / 34
ts
CHAPTER 13 / 34
읽기 약 2
SYNTAX

유틸리티 타입 해부


핵심 개념

TypeScript 내장 유틸리티 타입으로 기존 타입을 변환합니다. Partial<T>는 모든 속성을 선택적으로, Required<T>는 필수로, Readonly<T>는 읽기 전용으로 만듭니다. Pick<T,K>는 특정 속성만, Omit<T,K>는 특정 속성을 제외한 타입을 만듭니다. 유틸리티 타입을 지우며 타입 변환이 어떻게 사라지는지 확인하십시오.

코드 분석
TS📋 코드 (24줄)
// 유틸리티 타입 시뮬레이션
  const unitBase = { model: 'T-800', threat: 8, status: 'ACTIVE', location: 'LA' };

  // Partial<Unit> - 모든 속성 선택적
  function updateUnit(base, partial) { return { ...base, ...partial }; }

  // Pick<Unit, 'model' | 'threat'>
  function pickUnit(unit, keys) { return Object.fromEntries(keys.map(k => [k, unit[k]])); }

  // Omit<Unit, 'location'>
  function omitUnit(unit, keys) { return Object.fromEntries(Object.entries(unit).filter(([k]) => !keys.includes(k))); }

  const results = [
    { type: 'Partial — 부분 업데이트', result: JSON.stringify(updateUnit(unitBase, { status: 'OFFLINE' })) },
    { type: 'Pick — 선택 속성만', result: JSON.stringify(pickUnit(unitBase, ['model', 'threat'])) },
    { type: 'Omit — 특정 속성 제외', result: JSON.stringify(omitUnit(unitBase, ['location'])) },
  ];

  results.forEach(r => {
    const el = document.createElement('div');
    el.style.marginBottom = '8px'; el.style.fontSize = '11px';
    el.innerHTML = `<div style="color:#f59e0b;">${r.type}</div><div style="color:#888; font-size:10px; word-break:break-all;">${r.result}</div>`;
    document.currentScript.parentElement.appendChild(el);
  });

AI 프롬프트
🤖 AI에게 잘 물어보는 법 — 모델·전략별 프롬프트
Claude

무료: Sonnet 4.6 / Pro $20/mo: Opus 4.6

이 TS '유틸리티 타입' 코드에서
타입 에러·any 남용·타입 안전성 누락을 찾아
엄격한 타입으로 리팩토링해줘.
ChatGPT

무료: GPT-5.5 / Plus $20/mo: GPT-5.5 Pro

'유틸리티 타입'를 실무에서 사용하는
패턴 3가지를 비교표로 보여주고
각각의 적합한 케이스를 알려줘.
Gemini

무료: 2.5 Flash / Pro $19.99/mo: 3.1 Pro

이 TS '유틸리티 타입' 관련 코드 전체의 타입 구조를
분석하고 제네릭·유틸리티 타입으로
개선할 포인트를 정리해줘.
Grok

무료: Grok 4.1 / SuperGrok $30/mo

TypeScript '유틸리티 타입'를 꼭 써야 하는지
개발 속도 vs 안전성 관점에서
솔직하게 평가해줘.

⭐ 이것만 기억하세요
유틸리티 타입 해부 이 3가지만 확실히 잡으세요
1.인터페이스의 모든 필드를 선택적으로 만들려고 새 인터페이스를 복사하면 원본 변경 시 동기화가 안 됩니다
2.Partial은 전부 선택적, Required는 전부 필수, Pick은 일부 선택, Omit은 일부 제외 — 기존 타입을 변환합니다
3.다음 챕터에서 함수의 매개변수와 반환 타입을 정밀하게 지정하는 함수 타입을 배웁니다


공유하기
진행도 13 / 34