#javascript #arrays #typescript #loops #multidimensional-array
#javascript #массивы #typescript #циклы #многомерный массив
Вопрос:
У меня возникли проблемы при попытке переместить объекты в массив, который поступает из 2D-массива.
let blacksPosition: Array<any>;
for (let i = 0; i < 8; i ) {
for (let j = 0; j < 8; j ) {
if (boardArray[i][j].team === "black") {
blacksPosition.push(boardArray[i][j]);
}
}
}
TypeScript выдает мне следующую ошибку:
Переменная ‘blacksPosition’ используется перед назначением.
Но я не использовал blacksPosition
раньше. Я впервые объявляю его в этой строке.
boardArray
создается ли 2D-массив с помощью следующей функции:
function create2DArray(rows: number, cols: number): Array<Array<any>> {
const arr = new Array(rows);
for (let i = 0; i < arr.length; i ) {
arr[i] = new Array(cols);
}
return arr;
}
Затем я заполняю этот 2D-массив объектами Tile:
for (let i = 0; i < rows; i ) {
for (let j = 0; j < cols; j ) {
boardArray[i][j] = new Tile(i, j, col, "none");
}
}
Вот класс Tile:
class Tile {
x: number;
y: number;
tile: Element;
team: string;
piece: string;
constructor(i: number, j: number, tile: Element, team: string) {
this.x = i;
this.y = j;
this.tile = tile;
this.piece = "none";
this.team = team;
}
}
Есть ли способ добавить те объекты Tile, которые поступают из 2D-массива, в массив blacksPosition?
Комментарии:
1. Точно так же, как ошибка сообщает вам, вы дали ему тип, но не пустое значение массива
Ответ №1:
Вы определили его определение в typescript, но не присвоили ему значение или тип.
let blacksPosition: Array<any>;
должно быть
let blacksPosition: Array<any> = [];
Ответ №2:
Когда вы объявляете переменную, blacksPosition
просто назначьте ее пустому массиву let blacksPosition: Array<any> = []
, и вы можете захотеть изменить тип на Array<Tile>
, чтобы сохранить все типы безопасными.