无法访问Typescript

时间:2019-10-25 04:52:37

标签: angular typescript

我正在从HTML5本地存储中获取一些JSON对象,并将其分配给对象。

this.currentWebUser = Object.assign({}, JSON.parse(localStorage.getItem("currentUser")));

currentWebUser是类WebUser

的对象
export class WebUser {
  private _id: number;
  private _connectionID: number;

  public set id(value: number) {
    this._id = value;
  }

  public get id(): number {
    return this._id;
  }

  public set connectionID(value: number) {
    this._connectionID = value;
  }

  public get connectionID(): number {
    return this._connectionID;
  }
}   

当我尝试使用id来获取this.currentWebUser.id的值时(在打字稿中,这是id的引用getter方法),我得到的是不确定值,而不是实际值。

enter image description here

但是在chrome控制台中,我可以看到实际值。

enter image description here

需要帮助,在此先感谢!!!

2 个答案:

答案 0 :(得分:2)

问题在于

返回的值
Object.assign({}, JSON.parse(localStorage.getItem("currentUser")));

不是您的WebUser类的实例。 这是一个具有Json中存在的字段的对象(在调试器屏幕快照中清晰可见)。

您可以检查currentWebUser.__proto__.constructor使其指向Object(),而不是WebUser()

您可以将Object.assign的结果分配给currentWebUser变量,因为Object.assign的返回类型为any

您需要确保反序列化类的实例。 有几种方法,请参见以下链接

let webUser = Object.assign({}, JSON.parse('{"_connectionID": 1, "_id":2}'));
let webUser2 = Object.assign(
  new WebUser(),
  JSON.parse('{"_connectionID": 1, "_id":2}')
);
console.log(webUser);
console.log(webUser2);

输出:

{_connectionID: 1, _id: 2}          // Your code
WebUser {_connectionID: 1, _id: 2}  // What you expect

答案 1 :(得分:0)

在ts中定义类型为any的变量/field.property currentWebUser,并在构造函数本身中分配本地存储值。 例如:

public currenWebUser:any = {};

此外,您可以通过运行简单命令从本地存储获取json。 例如:

this.currentWebUser = JSON.parse(localStorage.getItem('currentUser'));