ts
CHAPTER 16 / 34
읽기 약 2분
SYNTAX
맵드 타입 & 조건부 타입 해부
핵심 개념
맵드 타입은 기존 타입의 속성을 변환하여 새 타입을 만듭니다. in keyof T로 모든 속성을 순회합니다. 조건부 타입(T extends U ? X : Y)은 타입 수준의 if문입니다. infer 키워드로 타입을 추론할 수 있습니다. 맵드 타입을 지우며 타입 변환 시스템이 어떻게 사라지는지 확인하십시오.
코드 분석
<div style='font-family:monospace; padding:16px; background:#0d1117; color:#e8e8e8;'>
<div style='color:#10b981; margin-bottom:12px;'>MAPPED & CONDITIONAL TYPES</div>
<script>
// Mapped Type 시뮬레이션
// type Optional<T> = { [K in keyof T]?: T[K] }
function makeOptional(obj) { return { ...obj }; } // 모든 속성 선택적
// type Stringify<T> = { [K in keyof T]: string }
function stringifyAll(obj) { return Object.fromEntries(Object.entries(obj).map(([k,v]) => [k, String(v)])); }
// 조건부 타입 시뮬레이션
// type IsArray<T> = T extends any[] ? true : false
function isArrayType(val) { return Array.isArray(val) ? 'true (배열)' : 'false (비배열)'; }
const unit = { model: 'T-800', threat: 8, active: true };
const results = [
{ type: 'Mapped Optional', result: JSON.stringify(makeOptional(unit)) },
{ type: 'Mapped Stringify', result: JSON.stringify(stringifyAll(unit)) },
{ type: 'IsArray<string[]>', result: isArrayType(['a','b']) },
{ type: 'IsArray<string>', result: isArrayType('T-800') },
];
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);
});
</script>
</div>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.맵드 타입은 [K in keyof T]로 프로퍼티를 순회 변환하고, 조건부 타입은 T extends U ? X : Y로 조건 분기합니다
3.다음 챕터에서 클래스에 메타데이터를 부착하는 데코레이터를 배웁니다
공유하기
진행도 16 / 34