我正在学习Angular,现在由于"无法读取未定义的属性(读取'push')"错误而陷入赋值.我知道这是一个很常见的错误,但我找不到我做错了什么.希望这里有人能帮助我!

我试图将偶数加到"偶数"数组中,并将偶数加到"不均匀"数组中.这就是我遇到错误的地方(读到‘PUSH’).我已经声明了它们,并为它们分配了一个空数组;不确定还能不能这样做.

我的.ts文件如下:

import { Component, Input, OnInit, Output } from '@angular/core';

@Component({
  selector: 'app-game-control',
  templateUrl: './game-control.component.html',
  styleUrl: './game-control.component.css'
})
export class GameControlComponent implements OnInit{
  counter = 0;
  intervalID;
  even: number[]=[];
  unEven: number[]=[];

  onStartGame(){
    this.intervalID = setInterval(this.GameStarted,1000)
    }

  onStopGame(){
    clearInterval(this.intervalID)
  }

  GameStarted(){
    this.counter = this.counter +1;
    Number.isInteger(this.counter/2)? this.even.push(this.counter) : this.unEven.push(this.counter);
    console.log('Even numbers logged: '+ this.even);
    console.log('Uneven numbers logged: '+ this.unEven);
  }
  ngOnInit(){}
}

推荐答案

try 以下更正后的方法:

onStartGame(){
  this.intervalID = setInterval(() => this.gameStarted(), 1000);
}

gameStarted(){
  this.counter = this.counter + 1;
  Number.isInteger(this.counter / 2) ? this.even.push(this.counter) : this.unEven.push(this.counter);
  console.log('Even numbers logged: ' + this.even);
  console.log('Uneven numbers logged: ' + this.unEven);
}

此外,遵循TypeScrip/JavaScript中的命名约定是一个很好的实践.通常,方法名称应以小写字母开头.因此,将GameStarted重命名为gameStarted会更好.

Typescript相关问答推荐

如何将绑定到实例的类方法复制到类型脚本中的普通对象?

如何从具有给定键列表的对象类型的联合中构造类型

为什么在TypScript中写入typeof someArray[number]有效?

类型{...}的TypeScript参数不能赋给类型为never的参数''

webpack错误:模块找不到.当使用我的其他库时,

Vue SFC中的多个脚本块共享导入的符号

PrimeNG日历需要找到覆盖默认Enter键行为的方法

如何重构长联合类型?

如何解决类型T不能用于索引类型{ A:typeof A; B:typeof B;. }'

是否有一个版本的联合类型递归地使属性只出现在一个可选选项中?

是否可以基于对象的S属性值[]约束对象的其他属性值用于类型化的对象数组?

跟踪深度路径时按条件提取嵌套类型

类型';字符串|数字';不可分配给类型';未定义';.类型';字符串';不可分配给类型';未定义';

接受字符串或数字的排序函数

如何在Nextjs路由处理程序中指定响应正文的类型

Typescript不允许在数组中使用联合类型

Typescript泛型-键入对象时保持推理

React router - 如何处理嵌套路由?

在 TypeScript 中实现类型级别深度优先搜索

Mongodb TypeError:类继承 events_1.EventEmitter 不是对象或 null