簡體   English   中英

在 TypeScript 中實現“toJson”function 的正確方法是什么?

[英]What is the proper way to implement a 'toJson' function in TypeScript?

我有一個自定義的 class,我需要一個toJson function。當然,我可以只實現一個名為Foo.toJsonFoo.toJsonObject或 Foo.jsonify 的Foo.jsonify

但是這樣做的標准方法是什么? 我還看到了一些包含serializer的示例。 我需要那么遠的 go 嗎?

基本上我希望能夠完成這項工作:

const foo = new Foo();
fse.writeJson('file.json', foo);

但是對於數據庫連接,我還需要能夠手動創建一個 json 表示:

const foo = new Foo();
db.writeObject(foo.toJson());

假設你不能只修改原來的 class:

  1. 聲明一個新類型,將 toJSON 方法添加到原始類型
  2. 將object投到新類型
  3. 為其分配 toJSON 方法

例如:

class Foo {
    public date: Date;

    constructor(date: Date) {
        this.date = date;
    }

    log() {
        console.log(this.date.toISOString());
    }
}

type ExtendedFoo = Foo & {
    toJSON: () => string;
}

const x = new Foo(new Date);

(x as ExtendedFoo).toJSON = function () {
     return `"\\/Date(${+this.date})\\/"`
}

x.log();
console.log(x);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM