属性“ id”的类型不兼容

时间:2019-04-17 09:34:42

标签: json angular typescript

我正在尝试通过在参数中传递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属性的类型能够正确返回。

2 个答案:

答案 0 :(得分:1)

您在班级中的ID是number,而在您的users.component.ts中,您通过执行toStringid: (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()作为字符串,因此类型不匹配。您需要保持它们不变(都是字符串或都是数字)。