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
