How can I convert a TypeScript object to a plain object?
Something like this is simple and it works :
let plainObj;
try {
plainObj = JSON.parse(JSON.stringify(obj));
} catch(e) {
console.error(e)
}
You just need to destructure the object. Something like this: {...myObject}
You can use Object.assign():
class Point {
private x: number;
private y: number;
constructor(x: number, y: number) {
this.x = x;
this.y = y;
}
getX(): number {
return this.x;
}
getY(): number {
return this.y;
}
}
let p1 = new Point(4, 5);
let p2 = Object.assign({}, p1);
p1
is the class instance, and p2
is just { x: 4, y: 5 }
.
And with the toPlainObj
method:
class Point {
private x: number;
private y: number;
constructor(x: number, y: number) {
this.x = x;
this.y = y;
}
getX(): number {
return this.x;
}
getY(): number {
return this.y;
}
toPlainObj(): { x: number, y: number } {
return Object.assign({}, this);
}
}
If this is something you need in more classes then you can have a base class which has this method:
class BaseClass<T> {
toPlainObj(): T {
return Object.assign({}, this);
}
}
class Point extends BaseClass<{ x: number, y: number }> {
private x: number;
private y: number;
constructor(x: number, y: number) {
super();
this.x = x;
this.y = y;
}
getX(): number {
return this.x;
}
getY(): number {
return this.y;
}
}