如您所说,您可以添加一个字段
type,在类型字符串到实现类之间创建一个映射,然后转换代码将非常简单:
export interface tool { type: string; name: string; draw(context:any): void;}class textTool implements tool { type:string = 'textTool'; name:string; fontSize:number; fontType:string; draw(context:any):void { }}const typeMapping:any = { 'textTool' : textTool //all other types};let json = '[{"type":"textTool", "name": "someName", "fontSize": 11}]';let elements: Array<tool> = JSON.parse(json).map((i:any) => { let target:any = new typeMapping[i.type]; for (const key in i) { target[key] = i[key]; } return target;});*克隆代码非常简单,但是对于普通对象来说已经足够了。



