Búsqueda de sitios web

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.

Artículos relacionados