我正在尝试序列化/反序列化一个对象。我认为最好的方法是将路径保存为作为json的一部分调用的文件,但是我不确定如何获取该路径。
在父级(A.ts
)中调用该路径是否可以获得文件(B.ts
/ Base.ts
)的路径?
也许有更好的方法吗?我正在尝试采用在主节点进程中创建的类,并将其传递给工作进程,我能看到的唯一原因就是以某种方式对类进行序列化/反序列化。
// 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)
})
答案 0 :(得分:0)
想到的最简单的方法是拥有一组与需要适当类的回调相关联的类名。
<p>piece of a puzzle</p>
<p>Planet <img src="someImage.png"> Earth</p>