首页 > 解决方案 > 定义了函数,但 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');

对于每一个Personin this.persons,我都能得到它的名字和姓氏,但是如果我试图得到它的全名,我会得到以下错误person.fullName is not a function:这是什么意思?

标签: javascripttypescriptecmascript-6

解决方案


您的代码有两个问题。

显而易见的是,fullName它不是一个函数,它是一个属性,因此它不应该被person.fullName访问person.fullName()

第二个问题是this.httpClient.get<Array<Person>>('http://url.of.my.service');不会返回Person它的实例将返回可能具有字段Person但不会是实例的对象Person,因此该属性fullName将不存在,因为您在该调用返回的对象上定义了它。(也猜测它不直接返回一个数组,看起来像一个 Angular 服务返回一个Observable

您需要将对象转换为类的实例,Object.assign例如使用。


推荐阅读