evolve
对象转换函数,使用转换函数映射对象的每个属性。
函数签名
typescript
function evolve<T extends Record<string, any>>(
transformations: Record<string, (value: any) => any>,
obj: T
): T参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
transformations | Record<string, (value: any) => any> | 是 | 转换函数映射对象 |
obj | T | 是 | 要转换的对象 |
返回值
| 类型 | 说明 |
|---|---|
T | 转换后的新对象 |
工作原理
- 创建新对象(浅拷贝原对象)
- 遍历 transformations 对象的每个键:
- 如果键在原对象中存在:
- 获取对应的转换函数
- 调用转换函数,传入原对象的对应值
- 将转换结果赋值给新对象的对应键
- 如果键在原对象中存在:
- 返回转换后的新对象
示例:
typescript
const user = {
name: 'alice',
age: 25,
email: 'alice@example.com'
}
const evolved = evolve({
name: (name) => name.toUpperCase(),
age: (age) => age + 1
}, user)
// evolved = {
// name: 'ALICE',
// age: 26,
// email: 'alice@example.com'
// }只转换指定的属性,其他属性保持不变。适用于对象的批量属性转换。