错误 TS2741:类型中缺少属性

Emi*_*dde 5 methods typescript angular angular7

在文件 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

文件服务/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'
    }
    ];
Run Code Online (Sandbox Code Playgroud)

...

services/user.service.ts(7,2) 中的错误:错误 TS2741:类型“{ firstName: string;”中缺少属性“isEqual”;lastName: string;}' 但在类型 'User' 中是必需的。

dee*_*Dev 5

services/user.service.ts(7,2) 中的错误:错误 TS2741:类型“{firstName: string;”中缺少属性“isEqual”;lastName: string;}' 但在“User”类型中是必需的。

这是因为在类定义中声明了函数isEqual,但在用户列表中只有 和firstNamelastName但没有关联的函数,并且用户类型为Users

{
  firstName: 'William',
  lastName: 'Jones'
},
Run Code Online (Sandbox Code Playgroud)

正如评论中提到的,您可以使用 来new ()创建一个新的User,其中也应该包含该功能。

public exampleUser = new User("William", "Jones");
Run Code Online (Sandbox Code Playgroud)

然后这可以依次用于一系列Users

public users: Users =  [ this.exampleUser ];
Run Code Online (Sandbox Code Playgroud)


小智 1

它指定您在函数中采用的参数isEqual的类型或模型应为{ firstName: 'John', lastName: 'Doe' },这表明您只需要以此格式传递数据。