angular - fel TS2741: Egenskap saknas i typ


I filen models/User.model.ts (se nedan) försökte jag sätta en metod isEqual som visas i koden nedan. Kan någon rätta min kod?

filmodeller/User.model.ts:

export class User {
    constructor(
    public firstName: string,
    public lastName: string,
    ) {}

    isEqual (other : User): boolean {
    return other === this;
    }
}

fil tjänster/user.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'
    }
    ];

...

FEL i services/user.service.ts(7,2): fel TS2741: Egenskapen 'isEqual' saknas i typen '{ firstName: string; lastName: string;}' men krävs i typen 'User'.

Svar #1

FEL i services/user.service.ts(7,2): fel TS2741: Egenskapen 'isEqual' saknas i typen '{ firstName: string; lastName: string;}' men krävs i typen 'User'.

Detta beror på att i din klassdefinition har du deklarerat funktionen isEqual, men i din lista över användare har du bara firstName och lastName men inte den associerade funktionen och typen av användare är Users.

{
  firstName: 'William',
  lastName: 'Jones'
},

Som nämnts i kommentarerna kan du använda new() för att skapa en ny User som också bör inkludera funktionen.

public exampleUser = new User("William", "Jones");

Detta skulle sedan i sin tur kunna användas i en array av Users

public users: Users =  [ this.exampleUser ];

Svar #2

Det anger att parametern du tar i funktionen isEqual ska vara av typ eller modell som { firstName: 'John', lastName: 'Doe' }, detta visar att du bara behöver skicka data i detta format.

Relaterade artiklar