对象工具
deepMergeObject
深度合并两个键值对对象,返回一个新对象。支持递归合并嵌套对象和数组。
ts
declare function deepMergeObject<T extends Record<string, any>, U extends Record<string, any>>(
target: T,
source: U,
options?: DeepMergeObjectOptions
): T & U参数
| 参数 | 类型 | 说明 |
|---|---|---|
target | Record<string, any> | 目标对象 |
source | Record<string, any> | 源对象,属性将合并到目标对象 |
options | DeepMergeObjectOptions | 可选配置 |
DeepMergeObjectOptions 选项
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
allowMergeUndefined | boolean | false | 是否允许将 undefined 值合并到目标对象 |
mergeArray | boolean | true | 是否合并数组(拼接),false 则直接覆盖 |
示例
tsx
import { deepMergeObject } from 'vitarx'
const defaults = {
theme: 'light',
fontSize: 14,
plugins: ['core'],
layout: { sidebar: true, header: true }
}
const userConfig = {
theme: 'dark',
plugins: ['chart'],
layout: { sidebar: false }
}
// 深度合并,数组默认拼接
const config = deepMergeObject(defaults, userConfig)
// {
// theme: 'dark',
// fontSize: 14,
// plugins: ['core', 'chart'],
// layout: { sidebar: false, header: true }
// }popProperty
从对象中弹出(移除并返回)指定属性。
ts
declare function popProperty<T extends object, K extends keyof T>(obj: T, key: K): T[K]| 参数 | 类型 | 说明 |
|---|---|---|
obj | T | 目标对象 |
key | K | 要弹出的属性键 |
返回值:被弹出属性的值,属性不存在时返回 undefined。
tsx
import { popProperty } from 'vitarx'
const options = { name: 'Vitarx', version: 4, debug: true }
const debug = popProperty(options, 'debug')
console.log(debug) // true
console.log(options.debug) // undefined(已移除)toArray
将值转换为数组。如果已经是数组则直接返回,否则包装成单元素数组。
ts
declare function toArray<T>(val: T | T[]): T[]tsx
import { toArray } from 'vitarx'
toArray('hello') // ['hello']
toArray(['a', 'b']) // ['a', 'b']
toArray(42) // [42]下一步
- 日志工具 — 了解日志输出工具