TypeScript 함수 조합

고차 함수와 커링이 만드는 인자 고정 흐름

함수를 값으로 전달하거나 일부 인자를 먼저 고정하면 반복 로직을 작게 나누고 재사용 가능한 처리 파이프라인을 만들 수 있다.

01

반복 패턴 찾기

filter, map, reduce처럼 데이터마다 달라지는 판단 함수만 분리한다.

variation point
02

함수 전달

정렬 기준, 검증 규칙, 렌더 포맷터를 인자로 넘겨 동작을 바꾼다.

callback
03

인자 고정

커링으로 환경 값이나 정책 값을 먼저 넣고 나중에 실제 데이터를 넣는다.

partial apply
04

조합 검증

작은 함수의 입력과 출력 타입이 이어지는지 TypeScript가 확인하게 한다.

타입 적용 처리 흐름
재사용
정책은 함수로, 데이터는 나중에 전달하면 같은 로직을 여러 화면에서 쓴다. 권한 검사, 포맷팅, 검증 규칙에 잘 맞는다.
policy function
타입
generic 고차 함수는 입력과 출력 관계를 보존해야 한다. any로 뭉개면 조합의 장점이 사라진다.
preserve T
가독성
중첩 커링이 많아지면 호출부가 수학식처럼 흐려진다. 팀이 읽는 비용이 커지면 명명된 함수로 풀어낸다.
name the step

조합 기준

변하는 축 콜백으로 분리한 부분이 실제로 자주 바뀌는지 확인한다.
타입 추론 호출부에서 불필요한 타입 인자를 계속 적지 않아도 된다.
디버깅 파이프라인 중간 값을 관찰할 이름 있는 지점이 있다.

커링 예시

const minLength = (n: number) => (value: string) =>
  value.length >= n;