javascript - 已定义函数,但 MyFunction 不是函数

标签 javascript typescript ecmascript-6

Person 是具有 firstNamelastName 属性的对象。 我有一项服务返回一些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/

相关文章:

javascript - 在 jQuery 中向变量添加值的问题

javascript - 如何在 Google Maps API 中的两个标记之间绘制路线?

angular - 在 typescript 项目中找不到 RouterConfig 的成员

node.js - FFmpeg 淡出音频过滤器(淡出)没有被应用于迭代地剪辑的轨道

javascript - 如何获得两个位置值 : Fixed and Absolute? 的函数

javascript - 使用内嵌在javascript函数中

html - 基于 Ionic 3 中的第一个 DropDownSelect 显示/隐藏第二个 DropDownSelect

javascript - 如何处理服务延迟的数据?

ecmascript-6 - Vue js 外部数据对象

javascript - 是否仍然可以获得 Facebook 好友电子邮件列表?