无法读取未定义的属性“推送” - Typescript

时间:2017-08-13 20:58:53

标签: javascript angular typescript ionic2

当我尝试添加到Typescript中的数组(包装在Ionic2中)时,我收到一个错误,告诉我数组未定义,即使我已声明它。我尝试使用两个不同的声明来声明它并没有发现问题。我使用的两个声明是:

tracker: any[];

tracker: Array<any>;

我第一次尝试向数组添加任何内容以及我在哪里得到错误如下。我希望包含整个功能,以防万一有可能重新定义'this'的内容:

// Answer Correctly
  answerQuestionCorrectly(answer) {
    let answerButton = <HTMLButtonElement>document.getElementById('answer-' + answer.AnswerId);
    answerButton.addEventListener('click', (event) => {
      // Increase the score
      this.currentScore = this.currentScore + this.countdown;
      // Set up quiz review
      var correct = answer.AnswerText;
      var qTrack = {no: this.questionNo, q: this.questionText, a: answer.AnswerText, c: correct}
      console.log(qTrack);
      this.tracker.push(qTrack);
      console.log(this.tracker);
      // Check for end of questions
      if (this.questionNo < this.noOfQuestions) {
        // Remove the old answers
        var parent = document.getElementById('answers');
        this.answers.forEach(element => {
          var button = <HTMLButtonElement>document.getElementById('answer-' + element.AnswerId);
          parent.removeChild(button);
        });
        // Re-init the timer
        this.timer.initTimer();
        // Load Next Question
        this.loadQuestion();
      } else {
        // End the Quiz
        this.endOfQuiz();
      }
    });
  }

3 个答案:

答案 0 :(得分:2)

这些声明仅指定变量的类型 - 它还需要一个值。尝试像

这样的东西
"Error: [vuex] Do not mutate vuex store state outside mutation handlers."
[vuex] Do not mutate vuex store state outside mutation handlers.

将变量初始化为空数组。

答案 1 :(得分:1)

您必须先初始化数组,然后才能将对象推入其中。

  

tracker:any [] = [];

答案 2 :(得分:1)

你必须像这样初始化它:

tracker: Array<any>=[];