サーバーとJSONを用いて通信するWebアプリケーションをTypescriptで書いています.JSONにシリアライズ/デシリアライズするとき,JSONにメソッドが含まれないので,デシリアライズしたデータを使ってオブジェクトを作ろうと考えたのですが,いい方法が分かりません.

今は次のようなコードを書いています.

class Pen{
    constructor(public color: String,public size:number) { }
    draw(): void {
        //do something
    }
}
var json = JSON.stringify(new Pen("rgb(0,0,0)",10));
var pen_data = <Pen> JSON.parse(json);
//pen_data.draw(); //TypeError: pen_data.draw is not a function

//pen_dataからPenのオブジェクトを作りたい
var new_pen = new Pen(pen_data.color, pen_data.size);

ですが,このコードはPenのプロパティが増えたときに一々書き直す必要がありますし,他のクラスでも同じことがしたくなったら同じようなコードを書かなければいけません.

このコードをジェネリックに書くにはどうすればよいでしょうか.