javascript - 算术运算的左侧必须是类型 'any' 、 'number' 或枚举类型。无法将 Number 声明为数字

标签 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”。

但我不能将其写为“数字”,因为这样我会收到错误““数字”仅指类型,但在这里被用作值。”

最佳答案

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

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

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

请注意,这需要 student 的默认值,但空数组也可以使用,例如

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

此时,您必须在 student 中填写实际值,该值应该是数字和字符串。

关于javascript - 算术运算的左侧必须是类型 'any' 、 'number' 或枚举类型。无法将 Number 声明为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54148540/

相关文章:

javascript - 如何为自定义输入建立 ngModel 双向数据绑定(bind),例如在单选按钮上

angular 7.0.5 ng new 不问你想添加 Angular 路由吗?....等

angular - 如何在 Angular 7 中将无限滚动与 mat-table 和 service 结合使用?

javascript - AngularJs:无法调用子模块中指令链接的函数?

javascript - getBoundingClientRect() 对象属性不可复制

typescript - ` ' $props ' is declared but its value is never read.` 错误发生在 Vue3/TypeScript 项目中,而 '$props' 没有被显式使用

javascript - 如何根据用户将告诉键及其值的子数组的值来过滤此数组

typescript - 如何重用接口(interface)成员的类型?

css - 使用转到下一个选项卡时,按钮未使用 Angular Material 出现

javascript - Accordion 内的 Angular Dynamic ngmodel 名称