12/08/2019, 09:03

Simple ways to deep copy an object in Typescript

interface Iperson { firstName: string, lastName: string, fullName: string, age: number, sex: string } const userA = { firstName: 'Nguyen', lastName: 'Luan' } // shallow copy const userAA: Iperson = <Iperson>userA; console.log(userA === userAA) // true console.log(userAA) / ...

interface Iperson {
  firstName: string,
  lastName: string,
  fullName: string,
  age: number,
  sex: string
}

const userA = {
  firstName: 'Nguyen',
  lastName: 'Luan'
}

// shallow copy
const userAA: Iperson = <Iperson>userA;
console.log(userA === userAA) // true
console.log(userAA)

// 1 Object.assign(target, ...source)
const userB: Iperson = Object.assign( <Iperson>{}, userA );

console.log(userA === userB) // false
userB.sex = 'male';
console.log(userB) 

// 2 Spread Operator
const userC: Iperson = <Iperson>{ ...userA }

console.log(userC === userA) // false
userC.fullName = 'Nguyen Thieu Luan';
console.log(userC)

// 3 JSON.stringtify() and JSON.parse()
const userD: Iperson = JSON.parse(JSON.stringify(userA));

console.log(userD === userA); // false
userD.age = 18;
console.log(userD)

// 4 lodash lib ...
// ...
0