angular - ข้อผิดพลาด TS2741: ไม่มีคุณสมบัติในชนิด
ในไฟล์ models/User.model.ts (ดูด้านล่าง) ผมพยายามตั้งเมธอด isEqual ดังที่แสดงในโค้ดด้านล่าง มีใครช่วยแก้ไขโค้ดของผมได้ไหม?
แฟ้ม models/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'.
คำตอบ #1
ข้อผิดพลาดในไฟล์ 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 ];
คำตอบ #2
มันระบุว่าพารามิเตอร์ที่คุณรับในฟังก์ชัน isEqual ควรเป็นชนิดหรือโมเดลแบบ { firstName: 'John', lastName: 'Doe' } ซึ่งนี่แสดงให้เห็นว่าคุณเพียงแค่ต้องส่งข้อมูลในรูปแบบนี้
