如何在typescript中创建对象时通过传递JSON初始化构造函数参数

如何在typescript中创建对象时通过传递JSON初始化构造函数参数,typescript,typescript-typings,typescript2.0,Typescript,Typescript Typings,Typescript2.0,假设我有一节课 export class PersonName { constructor( public firstName: string = "", public lastName: string = "", public middleName: string = "", ) { } } 我想通过在对象创建时传递json对象来初始化构造函数中声明的这些变量 例如: var person = new Person({

假设我有一节课

export class PersonName {
    constructor(
        public firstName: string = "",
        public lastName: string = "",
        public middleName: string = "",
    ) { }
}
我想通过在对象创建时传递json对象来初始化构造函数中声明的这些变量

例如:

var person = new Person({
        "firstName"  : "abc",
        "lastName"   : "xyz",
        "middleName" : ""
       });

一种方法是为构造函数提供重载,然后测试第一个参数是字符串还是包含以下字段的对象:

export class Person {
  public firstName;
  constructor(
      firstName: string,
      lastName: string,
      middleName: string,
  );  
  constructor(
      person: { firstName: string, lastName: string, middleName: string }
  );  
    constructor(
        arg1: string | { firstName: string, lastName: string, middleName: string } = "",
        public lastName: string = "",
        public middleName: string = "",
    ) {
      if (typeof arg1 === "string") {
        this.firstName = arg1;
      } else {
        this.firstName = arg1.firstName;
        this.lastName = arg1.lastName;
        this.middleName = arg1.middleName;
      }
    }
}

const person = new Person({
        "firstName": "",
        "lastName": "",
        "middleName": "",
 });
 const person2 = new Person("foo", "bar", "baz");

一种方法是为构造函数提供重载,然后测试第一个参数是字符串还是包含以下字段的对象:

export class Person {
  public firstName;
  constructor(
      firstName: string,
      lastName: string,
      middleName: string,
  );  
  constructor(
      person: { firstName: string, lastName: string, middleName: string }
  );  
    constructor(
        arg1: string | { firstName: string, lastName: string, middleName: string } = "",
        public lastName: string = "",
        public middleName: string = "",
    ) {
      if (typeof arg1 === "string") {
        this.firstName = arg1;
      } else {
        this.firstName = arg1.firstName;
        this.lastName = arg1.lastName;
        this.middleName = arg1.middleName;
      }
    }
}

const person = new Person({
        "firstName": "",
        "lastName": "",
        "middleName": "",
 });
 const person2 = new Person("foo", "bar", "baz");

您的示例不是有效的JSON(它甚至不是有效的语法),您是指
而不是
=
?是的,它只是一个复制粘贴错误。您对此有什么解决方案吗?您的示例不是有效的JSON(它甚至不是有效的语法),您的意思是
而不是
=
?是的,这只是一个复制粘贴错误。你有什么解决办法吗?