angular - error TS2741: Falta la propiedad en el tipo
En el archivo models/User.model.ts (ver más abajo) intenté establecer un método isEqual como se muestra en el código a continuación. ¿Alguien podría corregir mi código?
archivo modelos/User.model.ts:
export class User {
constructor(
public firstName: string,
public lastName: string,
) {}
isEqual (other : User): boolean {
return other === this;
}
}
archivo servicios/usuario.service.ts :
import { User } from '../models/User.model';
import { Subject } from 'rxjs/Subject';
export class UserService {
private users: User[] = [
{
firstName: 'William',
lastName: 'Jones'
},
{
firstName: 'John',
lastName: 'Doe'
}
];
...
ERROR en services/user.service.ts(7,2): error TS2741: La propiedad 'isEqual' falta en el tipo '{ firstName: string; lastName: string;}' pero es requerida en el tipo 'User'.
Respuesta #1
ERROR en services/user.service.ts(7,2): error TS2741: Falta la propiedad 'isEqual' en el tipo '{ firstName: string; lastName: string;}' pero es requerida en el tipo 'User'.
Esto se debe a que en la definición de tu clase tienes la función declarada isEqual, pero en tu lista de usuarios solo tienes el firstName y el lastName pero no la función asociada y el tipo de usuarios es Users.
{
firstName: 'William',
lastName: 'Jones'
},
Como se mencionó en los comentarios, podrías usar el new() para crear un nuevo User, lo cual también debería incluir la función.
public exampleUser = new User("William", "Jones");
Esto podría luego, a su vez, ser usado en un arreglo de Usuarios
public users: Users = [ this.exampleUser ];
Respuesta #2
Está especificando que el parámetro que estás tomando en la función isEqual debe ser de tipo o modelo como { firstName: 'John', lastName: 'Doe' }, esto muestra que solo necesitas pasar los datos en este formato.
