在Typescript中,我有一个类Contact
,它实现了一个接口IContact
。
我想向Contact
类添加一个属性或函数,它返回另外两个字段(firstname和lastname)的组合。
IContact
接口的定义如下所示:
export interface IContact {
firstname: string;
lastname: string;
}
Contact
类看起来像这样:
export class Contact implements IContact {
constructor(
public firstname: string,
public lastname: string
) { }
public fullname(): string {
return this.firstname + " " + this.lastname;
}
}
在我看来,我想输出Contact.fullname()
的结果,但是我收到fullname
不是函数的错误。
我可以访问该类的所有其他属性。
====更新===
我会添加一些额外的代码来澄清一些内容。
当我在视图中输出fullname
属性时,我尝试了contact.fullname()
,但也尝试了contact.fullname
。
在我的组件中,试图弄清楚发生了什么我尝试将fullname
输出到控制台,如下所示:console.log("FULLNAME " +contact.fullname());
,但是在控制台中给出了以下消息:EXCEPTION _this.contact.fullname is not a function
=====更新答案========
正如Sakuto所说,联系人列表是由从服务器收到的一些json创建的。通过调用它的构造函数完全创建一个新实例,我能够输出fullname
属性。
谢谢Sakuto!
答案 0 :(得分:11)
您可能正在尝试在从JSON
动态投放的对象上调用此方法。动态casted object
没有在类中定义的方法,它们只尊重contract
并具有属性。
使当前代码工作的唯一方法是创建Contact
的新实例,而不是仅使用<Contact> yourObject
投射它;
解决方案是做这样的事情:
let contactsList: Contact[] = [];
yourServiceReturn.ForEach(c => contactsList[] = new Contact(c.name, c.surname));
// You can now call getFullName on the object stored on contactsList
答案 1 :(得分:0)
How do I cast a JSON object to a typescript class
onReceiveCompany( jsonCompany : any )
{
let newCompany = new Company( jsonCompany );
// call the methods on your newCompany object ...
}