partial
偏函数应用,固定函数的部分参数,返回接收剩余参数的新函数。
函数签名
typescript
function partial<T extends (...args: any[]) => any>(
fn: T,
...args: any[]
): (...remainingArgs: any[]) => ReturnType<T>参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
fn | Function | 是 | 原函数 |
...args | any[] | 是 | 要预先固定的参数 |
返回值
| 类型 | 说明 |
|---|---|
(...remainingArgs: any[]) => ReturnType<T> | 偏函数,接收剩余参数 |
工作原理
- 保存要固定的参数
- 返回新函数:
- 接收剩余参数
- 将固定参数和剩余参数合并:
[...fixedArgs, ...remainingArgs] - 调用原函数并传入合并后的参数
- 返回原函数的执行结果
示例:
typescript
const add = (a, b, c) => a + b + c
const add5 = partial(add, 5)
add5(3, 2) // 5 + 3 + 2 = 10与柯里化的区别:偏函数一次性固定多个参数,返回接收剩余参数的函数。柯里化是逐个收集参数。