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

TypeScript로 파이프라인 패턴 구현


핵심 개념

함수 합성으로 데이터 변환 파이프라인을 구현합니다. 각 단계의 입출력 타입을 명확히 정의합니다. 타입 안전 방식으로 데이터를 변환합니다. 파이프라인을 지우며 데이터 흐름이 어떻게 끊기는지 확인하십시오.

코드 분석
TS📋 코드 (26줄)
// pipe<A, B, C>(fn1: (a:A)=>B, fn2: (b:B)=>C): (a:A)=>C
  const pipe = (...fns) => (value) => fns.reduce((acc, fn) => fn(acc), value);

  // 각 변환 함수 (타입 안전)
  const normalize = (unit) => ({ ...unit, model: unit.model.toUpperCase() });
  const addThreatLevel = (unit) => ({ ...unit, level: unit.threat >= 9 ? 'CRITICAL' : unit.threat >= 7 ? 'HIGH' : 'MEDIUM' });
  const addTimestamp = (unit) => ({ ...unit, processed: new Date().toISOString() });
  const format = (unit) => `[${unit.level}] ${unit.model} 위협도:${unit.threat}`;

  const processUnit = pipe(normalize, addThreatLevel, addTimestamp, format);

  const units = [
    { model: 't-800', threat: 8 },
    { model: 't-1000', threat: 10 },
    { model: 't-x', threat: 9 },
    { model: 't-600', threat: 6 },
  ];

  units.forEach(u => {
    const result = processUnit(u);
    const el = document.createElement('div');
    el.style.color = result.includes('CRITICAL') ? '#10b981' : result.includes('HIGH') ? '#f59e0b' : '#22c55e';
    el.style.fontSize = '11px'; el.style.marginBottom = '4px';
    el.textContent = result;
    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 안전성 관점에서
솔직하게 평가해줘.

⭐ 이것만 기억하세요
TypeScript로 파이프라인 패턴 구현 이 3가지만 확실히 잡으세요
1.데이터 변환을 중첩 함수(f(g(h(x))))로 작성하면 안에서 밖으로 읽어야 해서 가독성이 떨어집니다
2.pipe 함수로 변환 단계를 왼쪽→오른쪽 순서로 연결하며, 제네릭으로 각 단계의 입출력 타입을 체이닝합니다
3.다음 챕터에서 객체 생성과 의존성을 외부에서 주입하는 DI 패턴을 구현합니다


공유하기
진행도 28 / 34