💻 Dev

🛠️ 처음부터 만드는 Partial — 함수의 일부 인자를 미리 채워두기

# 처음부터 만드는 Partial
Curry와 자주 혼동되지만, Partial은 함수의 일부 인자만 미리 고정하고 나머지는 나중에 받는 패턴입니다.

기본 개념


Curry는 한 번에 하나씩 인자를 받지만, Partial은 여러 인자를 한 번에 고정합니다:
```javascript
// Curry: add(1)(2)(3)
const curried = curry(add);
curried(1)(2)(3); // 6
// Partial: partial(add, 1, 2)(3)
const partial1 = partial(add, 1, 2);
partial1(3); // 6
```

직접 만들어보기


```javascript
function partial(fn, ...args) {
return function(...nextArgs) {
return fn(...args, ...nextArgs);
};
}
// 사용 예제
const add = (a, b, c) => a + b + c;
const add1and2 = partial(add, 1, 2);
console.log(add1and2(3)); // 6
```

실전 활용


```javascript
// API 호출 시 기본값 설정
const fetch = (method, url, options) =>
`${method} ${url}`;
const getUser = partial(fetch, 'GET');
getUser('/api/user', {}); // 'GET /api/user'
// 콜백 함수 사전 설정
const log = (level, timestamp, msg) =>
`[${timestamp}] ${level}: ${msg}`;
const error = partial(log, 'ERROR', new Date().toISOString());
error('Server crashed');
// '[2026-03-09T...] ERROR: Server crashed'
```

TypeScript 버전


```typescript
function partial any>(
fn: T,
...args: any[]
): (...nextArgs: any[]) => ReturnType {
return function(...nextArgs: any[]): ReturnType {
return fn(...args, ...nextArgs);
};
}
```

🎯 핵심 정리


  • Partial: 여러 인자를 한 번에 고정

  • Curry: 하나씩 차례대로 고정

  • 용도: API 래퍼, 콜백 사전 설정, 함수 조합

  • 공식 문서: [MDN - bind()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind)
    💬 0
    👁 0 views

    Comments (0)

    💬

    No comments yet.

    Be the first to comment!