UNPKG

copy-deep

Version:

Used to do deep copy of objects and arrays (among others)

30 lines (25 loc) 676 B
export function copyDeep<T>(source: T): T { if (source !== null && typeof source === "object") { if (Array.isArray(source)) { return copyDeepArray(source) as T } else { return copyDeepObject(source as Record<string, unknown>) as T } } return source } function copyDeepArray<E>(source: Array<E>): Array<E> { const array: Array<E> = [] for (const e of source) { array.push(copyDeep(e)) } return array } function copyDeepObject<T extends Record<string, unknown>>(source: T): T { const object = {} for (const key of Object.keys(source)) { object[key] = copyDeep(source[key]) } return object as T } export default copyDeep