cloneDeep() function
value의 깊은 복사본을 만듭니다.
지원 타입: 원시 값, Array, 순수 객체(Object.create(null) 포함), Date, RegExp(lastIndex 보존), Map, Set, ArrayBuffer, TypedArray, DataView. 클래스 인스턴스는 프로토타입을 보존한 채 열거 가능한 자체 속성(문자열·심볼 키)이 복사됩니다. 순환 참조를 지원합니다.
structuredClone과 달리 함수는 예외를 던지지 않고 참조를 유지하며, 클래스 인스턴스의 프로토타입이 보존됩니다. WeakMap/WeakSet/Promise는 복제할 수 없으므로 그대로 반환됩니다.
Signature:
typescript
function cloneDeep<T>(value: T): T;Example
ts
const obj = { a: 1, b: { c: 2 }, d: [1, 2, 3] };
const cloned = cloneDeep(obj);
cloned.b === obj.b; // false
cloned.d === obj.d; // false
// 순환 참조
const circular = { a: 1, self: null as unknown };
circular.self = circular;
const clonedCircular = cloneDeep(circular);
clonedCircular.self === clonedCircular; // true
// 클래스 인스턴스는 프로토타입을 유지합니다
class Point {
constructor(public x: number) {}
}
cloneDeep(new Point(1)) instanceof Point; // true