算术运算的左侧必须为“ any”,“ number”或枚举类型。无法将数字声明为数字

时间:2019-01-11 14:31:09

标签: javascript typescript angular7

我有一个对象数组

student = [{
rollNo: Number,
name: String,
dateOfJoining: Number
}];

现在我正在尝试使用此代码对函数内部的数组进行排序。

students(){
for( let item of res.data){
this.event.push({
        name: item.name,
        rollNo: item.rollNO,
        date: item.joining,
      });
}
this.student.sort((val1, val2) => {return val2.dateOfJoining - val1.dateOfJoining});
}

但是我收到错误消息“算术运算的左侧必须为'any','number'或枚举类型。” 我知道是因为我的dateOfJoining是“数字”而不是“数字”。

但是我不能将其写为'number',因为这样我会收到错误消息:''number'仅指一种类型,但在此处被用作值。”

1 个答案:

答案 0 :(得分:3)

Number是JavaScript数字类型的构造函数。这不是您想要的值。

interface Student {
  rollNo: number;
  name: string;
  dateOfJoining: number;
}

student: Student[] = [{
  ...
}];

请注意,这将需要student的默认值,但是空数组也将起作用,例如

student = Student[] = [];
student.push({ rollNo: 1, name: 'Andrew', dateOfJoining: 2 });

这时,您将必须用数字和字符串的实际值填写student