Person
是具有 firstName
和 lastName
属性的对象。
我有一项服务返回一些Person
。
为了在 Typescript 中建模 Person
,我创建了以下 Person.ts
类:
export class Person {
firstName?: string;
lastName?: string;
get fullName(): string() {
return `${firstName} ${lastName}`;
}
}
我可以使用以下代码检索 Person
数组:
this.persons: Array<Person> = this.httpClient.get<Array<Person>>('http://url.of.my.service');
对于 this.persons
中的每个 Person
,我都能够获取它的名字和姓氏,但如果我尝试获取它的名字,则会收到以下错误全名:person.fullName 不是函数
。
这是什么意思?
最佳答案
您的代码有两个问题。
显而易见的是fullName
不是一个函数,它是一个属性,因此应该访问它 person.fullName
不是person.fullName()
第二个问题是this.httpClient.get<Array<Person>>('http://url.of.my.service');
不会返回 Person
的实例它将返回可能具有 Person
字段的对象但不会是 Person
的实例因此属性 fullName
将不存在,因为您已在该调用返回的对象上定义了它。 (还猜测它不会直接返回数组,看起来像 Angular 服务返回 Observable
)
您需要使用 Object.assign
将对象转换为类的实例。例如。
关于javascript - 已定义函数,但 MyFunction 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53088381/