origin/packages/client/src/tools/objects.ts

33 lines
1.1 KiB
TypeScript
Raw Normal View History

2024-12-30 08:26:40 +08:00
/**
* null或undefined时进行覆盖
*
*
* @param obj1
* @param obj2
* @returns
*/
export function mergeIfDefined(
obj1: Record<string, unknown>,
obj2: Record<string, unknown>
): Record<string, unknown> {
// 使用reduce替代forEach避免显式声明新对象提升代码简洁性
return Object.entries(obj2).reduce((acc, [key, value]) => {
// 使用nullish coalescing operator简化条件判断
if (value != null) {
acc[key] = value;
}
return acc;
}, { ...obj1 }); // 使用对象展开运算符创建新对象,确保原始对象不被修改
}
2025-01-03 09:24:46 +08:00
interface Option<T> {
label: string;
value: T;
}
export function convertToOptions<T extends string | number>(obj: Record<T, string>): Option<T>[] {
return (Object.entries(obj) as [T, string][]).map(([value, label]) => ({
label,
value
}));
}