我是 Java 开发人员,但我正在尝试使用 typescript 。
这是我的用户对象:
export class User
{
id: string;
name: string;
email?: string;
unit: string;
street: string;
postalcode: string;
paymentmode: string;
public isComplete(): boolean
{
if(this.id != null && this.email != null && this.isAddress()){ return true}
else return false;
}
public isAddress(): boolean
{
if(this.street != null && this.postalcode != null){ return true}
else return false
}
}
还有另一个 typescript ...
var user = new User();
user = this.loginService.getLocalUser();
我假设 localStorage 被解析为用户!
我无法以这种方式访问 isComplete 方法
user.isComplete()
相反,我需要将其用作静态对象
User.isComplete
我的 getLocaluser:
getLocalUser(): User {
var user = new User();
user = JSON.parse(localStorage.getItem('user'));
return user;
}
我怎样才能实现它?
最佳答案
使用这个
let user = new User().deserialize(this.loginService.getLocalUser());
现在在您的 User
模型中添加一个 deserialize()
方法
deserialize(input: any): User {
let self: any = this;
for (let prop in input) {
self[prop] = input[prop];
}
return self;
}
当您调用 Web 服务并使用 parse()
将其映射到您的 User
对象时,会发生什么?它的实例方法不会被创建,因为它们不驻留在您的response
对象 deserialize() 所做的是创建一个新的 User
对象副本,并从 response 中一个一个地复制值。
关于angular - 当从 LocalStorage 为对象赋值时如何在 typescript 对象中创建实例方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42508009/