ts
CHAPTER 28 / 34
읽기 약 2분
FUNCTION
TypeScript로 파이프라인 패턴 구현
핵심 개념
함수 합성으로 데이터 변환 파이프라인을 구현합니다. 각 단계의 입출력 타입을 명확히 정의합니다. 타입 안전 방식으로 데이터를 변환합니다. 파이프라인을 지우며 데이터 흐름이 어떻게 끊기는지 확인하십시오.
코드 분석
// 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