javascript - 定义了函数,但 MyFunction 不是函数
问题描述
Person
是具有 afirstName
和 alastName
属性的对象。我有一项服务会返回一些Person
. 为了Person
在 Typescript 中建模,我创建了以下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');
对于每一个Person
in this.persons
,我都能得到它的名字和姓氏,但是如果我试图得到它的全名,我会得到以下错误person.fullName is not a function
:这是什么意思?
解决方案
您的代码有两个问题。
显而易见的是,fullName
它不是一个函数,它是一个属性,因此它不应该被person.fullName
访问person.fullName()
第二个问题是this.httpClient.get<Array<Person>>('http://url.of.my.service');
不会返回Person
它的实例将返回可能具有字段Person
但不会是实例的对象Person
,因此该属性fullName
将不存在,因为您在该调用返回的对象上定义了它。(也猜测它不直接返回一个数组,看起来像一个 Angular 服务返回一个Observable
)
您需要将对象转换为类的实例,Object.assign
例如使用。
推荐阅读
- python - 编译 libvirt 时出现“ImportError: cannot import name 'metadata'”
- javascript - WebView 重定向停止工作,logcat 中没有错误
- ios - 在 UICollectionView 中执行 UITextView 键入时防止滚动位置重置
- command-line - vlc 分别从输入中流式传输左右音频通道
- spreadsheet - 查询动态范围列表名称。设置下限范围
- go - 识别字符串中的双字节字符并将其转换为单字节字符
- javascript - 如何修复反应本机错误任务:app:processDebugMainManifest FAILED
- django - 在 django 中可以使用这种子查询吗?
- c++ - 如果我参考基类捕获它,为什么我的异常会被切分到基类?
- postgresql - Spring Boot Postgres Flyway 集成