// I'm using Typescript 4.4.4 and node.js 12 LTS for this project, the Matrix class is giving me a problem during compilation with rollup, I'm not sure why, everything looks ok to me
Error:/src/Matrix.ts(29,9): semantic error TS2532: Object is possibly 'undefined'.
The source code:
export class Matrix {
rows: number;
cols: number;
data: number[][];
constructor(rows: number, cols: number) {
this.rows = rows;
this.cols = cols;
this.data = Array(this.rows)
.fill(1)
.map(() => Array(this.cols).fill(0));
}
copy() {
const m = new Matrix(this.rows, this.cols);
for (let i = 0; i < this.rows; i++) {
for (let j = 0; j < this.cols; j++) {
m.data[i][j] = this.data[i][j];
}
}
return m;
}
...
}
this is the line with the error:
m.data[i][j] = this.data[i][j];
and:
m.data[i][j] = this?.data?.[i]?.[j] as number;
seemed to get rid of the red underline on the right side, but it doesn't work on he left side
use ! for i'm sure, typescript, you don't need to check undefined
m.data[i]![j]! = this.data[i]![j]!;
you've got this warning because of the noUncheckedIndexedAccess tsconfig setting: https://www.typescriptlang.org/tsconfig#noUncheckedIndexedAccess