ошибка TS2741: свойство отсутствует в типе - PullRequest
1 голос
/ 17 июня 2019

В файле models / User.model.ts (см. Ниже) я попытался установить метод isEqual, как показано в коде ниже.Может ли кто-нибудь исправить мой код?

файл модели / User.model.ts:

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

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

файл services / 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'
    }
    ];

...

ОШИБКА в services / user.service.ts (7,2): ошибка TS2741: отсутствует свойство 'isEqual' в типе '{firstName: string;lastName: string;} ', но обязательно для типа' User '.

Ответы [ 2 ]

1 голос
/ 17 июня 2019

ОШИБКА в services / user.service.ts (7,2): ошибка TS2741: отсутствует свойство 'isEqual' в типе '{firstName: string; lastName: string;} ', но обязательно для типа' User '.

Это потому, что в вашем определении класса у вас есть объявленная функция isEqual, но в вашем списке пользователей у вас есть только firstName и lastName, но не ассоциированная функция, а тип пользователей - Users .

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

Как уже упоминалось в комментариях, вы можете использовать new () для создания нового User, который также должен включать функцию.

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

Затем он может быть использован в массиве Users

public users: Users =  [ this.exampleUser ];
0 голосов
/ 17 июня 2019

Указывает, что параметр, который вы принимаете в функции isEqual, должен иметь тип или модель как { firstName: 'John', lastName: 'Doe' }, это показывает, что вам просто нужно передать данные в этом формате.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...