javascript - แปลงวัตถุ JSON กลับเป็นคลาสต้นฉบับของมัน
ฉันกำลังพยายามที่จะทำการเรียงลำดับ/เรียกคืนอ็อบเจ็กต์ ฉันคิดว่าวิธีที่ดีที่สุดน่าจะเป็นการบันทึกเส้นทางไปยังไฟล์ที่เรียกใช้งานเป็นส่วนหนึ่งของ json แต่ฉันไม่แน่ใจว่าจะหาการเส้นทางดังกล่าวได้อย่างไร
การที่จะได้เส้นทางไปยังไฟล์นี้ (A.ts/B.ts) สามารถทำได้เมื่อเรียกใช้ภายในไฟล์แม่ (Base.ts) หรือไม่?
อาจจะมีวิธีที่ดีกว่าในการทำสิ่งนี้ไหม? ฉันกำลังพยายามนำคลาสที่สร้างขึ้นในกระบวนการโหนดหลัก และส่งต่อไปยังกระบวนการเวิร์กเกอร์ วิธีเดียวที่ฉันเห็นคือการทำให้คลาสสามารถเรียกใช้การเซเรียลไลซ์/ดีเซเรียลไลซ์ได้ somehow
// src/Base.ts
export abstract class Base {
public serialize() {
return JSON.stringify({path: '', obj: this})
}
public static deserialize(json: string) {
let { path, obj } = JSON.parse(json) as { path: string, obj: { [key: string]: any } }
let newable = require(path)
let o = new newable
return Object.assign(o, obj)
}
}
// src/filter/A.ts
export class A extends Base {
public cat: string = 'meow'
public sayHi() { return this.cat }
}
// src/filter/B.ts
export class B extends Base {
public dog: string = 'woof'
public sayHi() { return this.dog }
}
// test.ts
let serializedA = new A().serialize()
let serializedB = new B().serialize()
// Create child...
let worker = cp.fork(path.join(__dirname, './worker'), [], { silent: true })
worker.send({ serializedA, serializedB })
// worker.ts
process.on('message', msg => {
let classA = Base.deserialize(msg.serializedA)
let classB = Base.deserialize(msg.serializedB)
})