Skip to content

before

주어진 함수(func)의 호출 횟수를 제한하는 새로운 함수를 생성해요.

인터페이스

typescript
function before<F extends (...args: any[]) => any>(
  n: number,
  func: F
): (...args: Parameters<F>) => ReturnType<F> | undefined;

파라미터

  • n (number): 반환된 함수가 func를 호출하기 전까지 허용된 호출 횟수예요.
    • n이 0이면, func는 호출되지 않아요.
    • n이 양의 정수인 경우, func는 최대 n-1번 호출돼요.
  • func (F): 호출 횟수 제한이 적용될 함수예요.

반환 값

((...args: Parameters<F>) => ReturnType<F> | undefined): 새로운 함수를 반환해요. 이 함수는 다음과 같은 기능을 가져요.

  • 호출 횟수를 추적해요.
  • n-1번째 호출까지 func를 호출해요.
  • 호출 횟수가 n에 도달하거나, 초과하면 undefined를 반환하여 함수 호출을 중지해요.

에러

n이 음수일 경우 오류를 발생시켜요.

예시

typescript
import { after } from 'es-toolkit/function';

const mockFn = () => {
  console.log('실행됨');
};
const afterFn = after(3, mockFn);

// 아무것도 로깅하지 않아요.
afterFn();
// 아무것도 로깅하지 않아요.
afterFn();
// '실행됨'을 로깅해요.
afterFn();

Lodash와의 호환성

es-toolkit/compat에서 before를 가져오면 lodash와 호환돼요.

  • n이 음수여도 에러를 던지지 않아요.
  • func가 함수가 아니면 에러를 던져요.
  • 호출 횟수가 n에 도달하거나 초과하면 func의 마지막 결과를 반환해요.
typescript
import { before } from 'es-toolkit/compat';

let count = 0;

const before3 = before(3, () => {
  console.log('카운트를 증가시켜요...');
  return ++count;
});

console.log(before3()); // 카운트를 증가시켜요... => 1
console.log(before3()); // 카운트를 증가시켜요... => 2
console.log(before3()); //                   => 2

MIT 라이선스에 따라 배포됩니다.