开发者问题收集

Typescript 2d 数组定义引发错误

2018-07-18
99

我有扎实的 JavaScript 背景,正在尝试学习 TypeScript。我遇到了一个问题,我知道它在 JavaScript 中可以工作,但在 TypeScript 中却不行:

我试图用一个由 5 组成的矩阵或二维数组初始化一个类成员;这是我的代码:

private rows: number;
private cols: number;
private data: number[][];

constructor(rows: number, cols: number) {
    this.rows = rows;
    this.cols = cols;
    this.data = [];


    // init matrix with fives
    for (let i: number = 0; i < this.rows; i++) {
        this.data[i] = [];
        for (let j: number = 0; j < this.cols; i++) {
            this.data[i][j] = 5; // this is line 21
        }
    }
}

但是,每当我运行代码并尝试创建此类的新实例时,我都会在第 21 行(如上所示)收到错误:

Uncaught TypeError: Cannot set property '0' of undefined

我研究这个问题已经有一段时间了,似乎其他人没有这个问题。有人知道如何解决这个问题吗?

顺便说一句:我在纯 JS 中尝试了同样的代码,它运行良好,没有任何错误。

2个回答

看起来 i 在第二个循环中也会增加。

190386302
Madhan Varadhodiyil
2018-07-18

我看到您将数据变量声明为二维数组,然后在构造函数后将其初始化为一维数组。我认为在 TypeScript 中您不应该这样做。

vitomadio
2018-07-18