In Typescript I have a class Contact
which implements an interface IContact
.
I want to add a property or function to the Contact
class which returns the combination of two other fields (firstname and lastname).
The definition of the IContact
interface looks like this:
export interface IContact {
firstname: string;
lastname: string;
}
The Contact
class look like this:
export class Contact implements IContact {
constructor(
public firstname: string,
public lastname: string
) { }
public fullname(): string {
return this.firstname + " " + this.lastname;
}
}
In my view I want to output the result of Contact.fullname()
but I receive an error that fullname
is not a function.
I do have access to all other properties on that class.
==== UPDATE ===
I'll add some extra code to clarify some stuff.
When I output the fullname
property in my view I have tried contact.fullname()
but also contact.fullname
which results in nothing.
In my component, trying to figure out what was happening I tried to output fullname
to the console like this: console.log("FULLNAME " +contact.fullname());
, but that give me the following message in the console: EXCEPTION _this.contact.fullname is not a function
===== UPDATED WITH ANSWER ========
As Sakuto stated correctly the list of contacts is created by some json received from the server. By creating a new instance entirely by calling it's constructor i was able to output the fullname
property.
Thanks Sakuto!
You are probably trying to call this method on an object dynamically casted from a JSON
. Dynamically casted object
does not have the method defined in the class, they just respect the contract
and have the property.
The only way to make your current code work is to create a new instance of Contact
instead of just casting it with <Contact> yourObject
;
The solution would be to do something like this:
let contactsList: Contact[] = [];
yourServiceReturn.ForEach(c => contactsList[] = new Contact(c.name, c.surname));
// You can now call getFullName on the object stored on contactsList
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With