如何在没有任何外部库的情况下将 JSON 对象转换为 TypeScript 类实例?[复制]

How can I cast a JSON object to a TypeScript class instance without any external library? [duplicate]

提问人:Zharin 提问时间:5/29/2023 更新时间:5/30/2023 访问量:120

问:

我正在尝试像以下示例一样转换一个JSON对象:

class Person {
    constructor(
      public firstName, 
      public lastName
   ) {}

   function getName() {
      return this.firstName + “ “ + this.lastName;
   }
}

目标是解析如下所示的 JSON:

    {
    firstName: “Max“,
    lastName: “Mustermann“
    }

添加到上述类的实例以访问所有属性和方法。

有没有一种简单的方法可以创建一个函数,使这种类型的 JSON/类能够实现这样的功能? 嵌套对象也应该是可能的。

我可以为每个不同的类编写一个工厂方法,但应该有更好的方法来获得这样的功能。

JavaScript TypeScript 转换

评论

0赞 Bergi 5/29/2023
"我可以为每个不同的类编写一个工厂方法,但应该有更好的方法来获得这样的功能。- 实际上不,为每个类编写工厂方法是唯一正确的解决方案。这对于处理不同的构造函数参数和内部状态是必要的 - 即使类还没有这些,它也可能稍后得到它们,你应该始终简单地调用工厂方法。

答:

1赞 Amit Kumar Singh 5/29/2023 #1

使用 Object.assign

像这样创建你的类,观察构造函数

class Person {
       public firstName: string; 
       public lastName: string;

       public constructor(init?: Partial<Person>) {
        Object.assign(this, init);
       }

      function getName() {
        return this.firstName + “ “ + this.lastName;
      }
   }
  

将 json 传递到此构造函数中

let person =  new Person({firstName: "A", lastName: "B" });
console.log(person);