En Typescript tengo una clase Contact que implementa una interfaz IContact . Quiero agregar una propiedad o función a la clase Contact que devuelve la combinación de otros dos campos (nombre y apellido). La definición de la interfaz IContact se ve así:
export interface IContact { firstname: string; lastname: string; } La clase de Contact se ve así:
export class Contact implements IContact { constructor( public firstname: string, public lastname: string ) { } public fullname(): string { return this.firstname + " " + this.lastname; } } En mi opinión, quiero generar el resultado de Contact.fullname() pero recibo un error de que fullname no es una función. Tengo acceso a todas las demás propiedades de esa clase.
==== ACTUALIZAR ===
Agregaré un código adicional para aclarar algunas cosas. Cuando fullname la propiedad de nombre completo en mi opinión, probé contact.fullname() pero también contact.fullname , lo que no da como resultado nada. En mi componente, tratando de averiguar qué estaba sucediendo, intenté enviar el fullname a la consola de esta manera: console.log("FULLNAME " +contact.fullname()); , pero me da el siguiente mensaje en la consola: EXCEPTION _this.contact.fullname is not a function
===== ACTUALIZADO CON RESPUESTA ========
Como Sakuto dijo correctamente, la lista de contactos es creada por algún json recibido del servidor. Al crear una nueva instancia completamente llamando a su constructor, pude generar la propiedad de fullname . Gracias Sakuto!
Probablemente esté intentando llamar a este método en un objeto emitido dinámicamente desde un JSON . casted object dinámicamente no tiene el método definido en la clase, solo respeta el contract y tiene la propiedad.
La única forma de hacer que su código actual funcione es crear una nueva instancia de Contact en lugar de simplemente convertirlo con <Contact> yourObject ;
La solución sería hacer algo como esto:
let contactsList: Contact[] = []; yourServiceReturn.ForEach(c => contactsList[] = new Contact(c.name, c.surname)); // You can now call getFullName on the object stored on contactsList¿Cómo convierto un objeto JSON en una clase mecanografiada?
onReceiveCompany( jsonCompany : any ) { let newCompany = new Company( jsonCompany ); // call the methods on your newCompany object ... }