frpc-desktop/src/utils/clone.ts
2023-11-27 15:03:25 +08:00

20 lines
524 B
TypeScript

export function clone<T>(value: T): T {
/** 空 */
if (!value) return value;
/** 数组 */
if (Array.isArray(value))
return value.map(item => clone(item)) as unknown as T;
/** 日期 */
if (value instanceof Date) return new Date(value) as unknown as T;
/** 普通对象 */
if (typeof value === "object") {
return Object.fromEntries(
Object.entries(value).map(([k, v]: [string, any]) => {
return [k, clone(v)];
})
) as unknown as T;
}
/** 基本类型 */
return value;
}