私はプロジェクトにtypescriptを使用しています。コレクションをjsonにシリアル化してファイルに保存し、後でそのファイルを同様のコレクションにデシリアライズする必要があります。コレクションのようなものになります。jsonを複数のタイプのコレクションにデシリアライズする
elements: Array<tool>
を、私のツールのインターフェースは次のようになります。
export interface tool {
name: string;
draw(context:any);
}
とツールの実装は次のようになります。
export class textTool implements tool {
name: string;
fontSize:number;
fontType:string;
draw(context:any){
// draws the control...
}
}
私はツールインタフェースのいくつかの実装を持っています: textTool、imageTool、およびrectangleToolです。私が解決しなければならない問題は、ファイルのコンテンツをツールのコレクションにデシリアライズすると、通常のオブジェクトだけで、textToolのインスタンスではありません。
私はJSON.stringify(elements)
を使用してjsonを作成し、JSON.parse(jsonText)
をデシリアライズします。
私はパーソンが、どの種類のインスタンスを作成するべきかを知る方法がないことを理解しています.Jsonテキストには情報がありません。私は、必要なクラスインスタンスを特定するためのフィールドや何かを追加し、そのクラスを手動で「新規」にすることを考えました。どのようなオプションを私は手動でツールのコレクションにjsonを解析する必要はありません(適切なタイプ)?
選択肢がたくさんがあります:あなたは、「別のファイルに、または1つのファイルにが異なると、異なるタイプを保存することができますそれぞれのタイプごとに「セクション」があります。また、以下のように各オブジェクトをラップすることもできます: '{" type ":" textTool "、" object ":{...}}' –
@NitzanTomerおそらく動作することに同意します。他の何か、または私は何かが欠けていた。 – LPains
「良い」は客観的な基準ではありません。あなたが「より良い」という意味でより具体的になることによって、より客観的になる方法があるかもしれませんが、この質問は事実ではなく意見を呼び寄せます。 –