我正在尝试通过在参数中传递eb_user类的属性来返回我创建的用户的信息,但是出现错误。
这是我收到的错误:
Argument of type '{ id: string; nom: string; prenom: string; mail: string; domaine: string; tel: string; color: string; }'
is not assignable to parameter of type 'eb_user'.
Types of property 'id' are incompatible.
Type 'string' is not assignable to type 'number'.
这是我在其中创建用户的users.component.ts文件
addUser() {
const copiedData = this.data.slice();
copiedData.push(this.createNewUser());
this.dataChange.next(copiedData);
}
private createNewUser() {
const nom =
NAMES[Math.round(Math.random() * (NAMES.length - 1))] + ' ' +
NAMES[Math.round(Math.random() * (NAMES.length - 1))].charAt(0) + '.';
return {
id: (this.data.length + 1).toString(),
nom: nom,
prenom: Math.round(Math.random() * 100).toString(),
mail: Math.round(Math.random() * 100).toString(),
domaine: Math.round(Math.random() * 100).toString(),
tel: Math.round(Math.random() * 100).toString(),
color: COLORS[Math.round(Math.random() * (COLORS.length - 1))]
};
}
eb_user.ts文件:
import {EbRole} from './role';
export class eb_user {
id: number;
nom: string;
prenom: string;
tel: string;
mail: string;
domaine: string;
constructor(){
this.id = null;
this.nom = null;
this.prenom = null;
this.tel = null;
this.mail = null;
this.domaine= null;
}
}
我希望eb_users属性的类型能够正确返回。
答案 0 :(得分:1)
您在班级中的ID是number
,而在您的users.component.ts
中,您通过执行toString
(id: (this.data.length + 1).toString()
)返回了一个字符串。
删除toString()应该起作用:
return {
id: (this.data.length + 1),
nom: nom,
prenom: Math.round(Math.random() * 100).toString(),
mail: Math.round(Math.random() * 100).toString(),
domaine: Math.round(Math.random() * 100).toString(),
tel: Math.round(Math.random() * 100).toString(),
color: COLORS[Math.round(Math.random() * (COLORS.length - 1))]
};
答案 1 :(得分:0)
您似乎已将copiedData
强烈键入为eb_user[]
。由于您要从id
返回createNewUser()
作为字符串,因此类型不匹配。您需要保持它们不变(都是字符串或都是数字)。