Skip to content

evolve

对象转换函数,使用转换函数映射对象的每个属性。

函数签名

typescript
function evolve<T extends Record<string, any>>(
  transformations: Record<string, (value: any) => any>,
  obj: T
): T

参数

参数名类型必填说明
transformationsRecord<string, (value: any) => any>转换函数映射对象
objT要转换的对象

返回值

类型说明
T转换后的新对象

工作原理

  1. 创建新对象(浅拷贝原对象)
  2. 遍历 transformations 对象的每个键:
    • 如果键在原对象中存在:
      • 获取对应的转换函数
      • 调用转换函数,传入原对象的对应值
      • 将转换结果赋值给新对象的对应键
  3. 返回转换后的新对象

示例

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'
// }

只转换指定的属性,其他属性保持不变。适用于对象的批量属性转换。