无法读取未定义打字稿的属性“ push”

时间:2018-07-21 08:31:51

标签: arrays angular

我试图将日期对象推入数组,但出现此错误“无法读取未定义的属性'push'”。

export class CalendarComponent { 
days: Date[]

showMonths() {

 const interval = new Interval();

    interval.fromMonth  = this.selectedFromMonth.number;
    interval.fromYear = this.selectedFromYear.number;
    interval.toMonth = this.selectedToMonth.number;
    interval.toYear = this.selectedToYear.number;

    for (let i = interval.fromMonth - 1; i < 11; i++) {
      const day = new Date(interval.fromYear, i, 1);
       this.days.push(day);
      // console.log(day);
      // days.push(day);
    }

    // console.log(day);
}

如果'days'已经是一个数组,而'day'不是未定义,为什么会出现此错误?

2 个答案:

答案 0 :(得分:5)

您需要初始化您的属性。您刚刚设置了它的类型,但实际上它是undefined

days: Date[] = [];

答案 1 :(得分:1)

静态类型化将是打字机的未来,当您将代码编译为javascript类型化时,这将对构建期间的开发人员毫无帮助。

days: Date[]days相同,并且初始值未定义

var days;

console.log(days); // => undefined

为什么您需要在使用[]空数组之前需要有天数

days: Date[] = [];