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

타입 가드 해부: 런타임 타입 검사


핵심 개념

타입 가드는 런타임에 타입을 좁히는 표현식입니다. typeof, instanceof, in 연산자와 사용자 정의 타입 가드(is 키워드)를 활용합니다. 타입 가드 없이 유니온 타입을 사용하면 타입 오류가 발생합니다. 타입 가드를 지우며 런타임 타입 검사가 어떻게 사라지는지 확인하십시오.

코드 분석
TS📋 코드 (31줄)
// typeof 타입 가드
  function processInput(input) {
    if (typeof input === 'string') return `[STRING] ${input.toUpperCase()}`;
    if (typeof input === 'number') return `[NUMBER] ${input.toFixed(2)}`;
    if (typeof input === 'boolean') return `[BOOLEAN] ${input ? '활성' : '비활성'}`;
    return '[UNKNOWN]';
  }

  // instanceof 타입 가드
  function handleError(err) {
    if (err instanceof TypeError) return `[TypeError] ${err.message}`;
    if (err instanceof RangeError) return `[RangeError] ${err.message}`;
    return `[Error] ${err}`;
  }

  // in 연산자 타입 가드
  function processUnit(unit) {
    if ('threat' in unit) return `[TERMINATOR] 위협도: ${unit.threat}`;
    if ('intel' in unit) return `[SPY] 정보: ${unit.intel}`;
    return '[UNKNOWN UNIT]';
  }

  const inputs = ['T-800', 800, true, null];
  const units = [{ model:'T-800', threat:8 }, { agent:'007', intel:'CLASSIFIED' }];

  [...inputs.map(processInput), ...units.map(processUnit)].forEach(r => {
    const el = document.createElement('div');
    el.style.color = '#888'; el.style.fontSize = '11px'; el.style.marginBottom = '4px';
    el.textContent = r;
    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.typeof, instanceof, in, 커스텀 타입 가드(is 키워드)로 런타임에서 타입을 좁혀 안전하게 접근합니다
3.다음 챕터에서 기존 타입을 변환하는 유틸리티 타입을 배웁니다


공유하기
진행도 12 / 34