Angular typescript类中的方法给出错误“;不是一个函数;
我在Angular2 web应用程序上工作。我用typescript创建了一个简单的类:Angular typescript类中的方法给出错误“;不是一个函数;,angular,typescript,Angular,Typescript,我在Angular2 web应用程序上工作。我用typescript创建了一个简单的类: export class User { firstName: string; lastName: string; nominative() : string { return this.lastName + " " + this.firstName; } } 当我对类型为User的对象调用namignative时,我收到以下错误:由:User.namign
export class User {
firstName: string;
lastName: string;
nominative() : string {
return this.lastName + " " + this.firstName;
}
}
当我对类型为User
的对象调用namignative
时,我收到以下错误:由:User.namignative不是函数引起的:0:0中的错误
我在我的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 => { ... }
但一切都没有改变。问题只存在于这个类中,那么我做错了什么呢?,因为User
只告诉编译器,可以安全地假设值的类型是User
,但对运行时没有任何影响,也不会有任何方法,因为方法不是用JSON传递的
你需要
let user = new User(JSON.parse(sessionStorage.getItem("User")));
获取实际的用户
实例。您需要创建一个构造函数,将JSON中的值分配给如下字段
class User {
...
constructor(json:any) {
this.firstName = json.firstName;
this.lastName = json.lastName;
}
另一个选项是执行Object.assign(new User(),JSON.parse(sessionStorage.getItem(“User”))
我有完全相同的错误,但我没有读取JSON。我的构造函数是空的。classa(){doThing():void{…}当我调用A时,导出默认的新A
。doThings()
我得到的doThings不是一个函数
。我不太喜欢类型脚本:D我会尝试在默认值之间删除new
。。。A
或在末尾添加()
。。。导出默认的新A()
。