javascript - 正确实例化复杂的 JS 对象

标签 javascript typescript

我正在通过 Web 服务获取数据,并且想用地址对象填充我的对象 User。

当尝试为对象 this.user.address.residentialAddress 赋值时,我得到了

ERROR TypeError: Cannot set property 'residentialAddress' of undefined

尝试使用构造函数实例化时会出现相同的错误。 简单console.log(this.user.address.residentialAddress.City);输出值。

我的猜测是我没有正确创建对象,但我看不到解决方案?

private user: MyUser;
...
this.user = new MyUser();

this.user.address.residentialAddress = {
          City: data.address.residentialAddress.City,
          StreetAddress: data.address.residentialAddress.StreetAddress,
          Suburb: data.address.residentialAddress.Suburb,
          Province: data.address.residentialAddress.Province
};       


export class Address {    
    public StreetAddress: string;
    public Suburb: string;
    public City: string;
    public Province: string;

    constructor(street: string, suburb: string, city: string, province: string){
        this.StreetAddress = street;
        this.Suburb = suburb;
        this.City = city;
        this.Province = province;
    }
}

export class MyUser {    
    address: {
        residentialAddress: Address;
        postalAddress: Address;
    }
    ....

}

最佳答案

我认为你应该将地址放在构造函数中:

export class MyUser {    
    public address: object;
    constructor(){
        this.address = {
            residentialAddress: Address;
            postalAddress: Address;
        }
    }

}

这将使user.address在实例化后被定义,并且Cannot set property 'residentialAddress' of undefined应该消失。

关于javascript - 正确实例化复杂的 JS 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48682759/

相关文章:

javascript - 需要一种设计模式来仅获取跨类通用的特定功能

javascript - 了解 Angular 2 webpack 项目中的源代码符号链接(symbolic link)

typescript - 比较类型 'Snapshot<T>' 和 'DataSnapshot' 时堆栈深度过多。 [2321服]

javascript - 如何在拖放 div 位置上拖动 div 时显示表单?

javascript - 在JS文件中访问ViewBag - Asp.net MVC

javascript - Bootstrap 容器内 100% 宽度的 div

javascript - 使用 HTTP-Basic 身份验证的 Angular 6 HTTP Get 请求

javascript - 如何使用 javascript find 方法解析 xml?

Javascript systemJS 错误找不到模块

typescript - 为什么自动完成停止在 TypeScript 类型的对象中工作?