Skip to content

ary

创建一个限制函数可接收参数数量的新函数。

typescript
const limitedFunc = ary(func, n);

参考

ary(func, n)

当您想要限制函数可接收的参数数量时,请使用 ary。额外传递的参数将被忽略。这在函数式编程中特别有用,可以防止回调函数接收意外的参数。

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

function fn(a: number, b: number, c: number) {
  return Array.from(arguments);
}

// 限制为不接收任何参数
ary(fn, 0)(1, 2, 3);
// Returns: []

// 限制为只接收 1 个参数
ary(fn, 1)(1, 2, 3);
// Returns: [1]

// 限制为只接收 2 个参数
ary(fn, 2)(1, 2, 3);
// Returns: [1, 2]

map 等数组方法一起使用时特别有用。

typescript
// parseInt 接收两个参数,但 map 会传递三个参数
['1', '2', '3'].map(parseInt);
// Returns: [1, NaN, NaN]

['1', '2', '3'].map(parseInt);
// 结果: [1, NaN, NaN]
// 因为会执行 parseInt('2', 1), parseInt('3', 2)。

// 使用 ary 限制为只传递第一个参数
['1', '2', '3'].map(ary(parseInt, 1));
// 结果: [1, 2, 3] ✅

参数

  • func (F): 要限制参数数量的函数。
  • n (number): 最多可接收的参数数量。

返回值

((...args: any[]) => ReturnType<F>): 最多只接收 n 个参数的新函数。

采用 MIT 许可证发布。