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 an instance of the class, and p2 is just { x: 4, y: 5 } .
And using 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 what you need in more classes, you can have a base class that 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; } }
source share