类中的方法给出错误“不是函数”

我在 Angular2网络应用程序上工作,我用打字稿创建了一个简单的类:

export class User {
firstName: string;
lastName: string;


nominative() : string {
return this.lastName + " " + this.firstName;
}
}

当我对类型为 User的对象调用 nominative时,我收到这个错误: Error in :0:0 caused by: user.nominative is not a function

我在 AppComponent类中调用这个函数:

export class AppComponent implements OnInit {
name: string = "";


ngOnInit() : void {
let user = JSON.parse(sessionStorage.getItem("User")) as User;
if (user) {
this.name = user.nominative();
}
}
}

我已经尝试过这样使用 lambda 表达式:

nominative = () : string => { ... }

但是什么都没有改变,问题只存在于这门课上,那么我到底做错了什么?

36267 次浏览

as User只是告诉编译器,假设该值为 User类型是安全的,但是对运行时没有任何影响,而且不会有任何方法,因为方法不是用 JSON 传递的。

你需要

let user = new User(JSON.parse(sessionStorage.getItem("User")));

得到一个实际的 User实例。您需要创建一个构造函数,将 JSON 中的值分配给

class User {
...
constructor(json:any) {
this.firstName = json.firstName;
this.lastName = json.lastName;
}