Подтвердить что ты не робот

Typescript - инициализация многомерных массивов

Я играю с Typescript, и мне интересно, как правильно создавать и объявлять многомерный массив. Здесь мой код:

class Something {
    private things: Thing[][];

    constructor() {
        things = [][]; ??? how instantiate object ???

        for(var i: number = 0; i < 10; i++) {
            this.things[i] = new Thing[];   ??? how instantiate 1st level ???
            for(var j: number = 0; j< 10; j++) {
                this.things[i][j] = new Thing();   ??? how instantiate 2nd lvl item ???
            }
        }
    }
}

Не могли бы вы рассказать о выбранных местах?

4b9b3361

Ответ 1

Вам нужна только [] для создания экземпляра массива - это верно независимо от его типа. Тот факт, что массив имеет тип массива, не имеет значения.

То же самое относится к первому уровню в вашем цикле. Это просто массив, а [] - новый пустой массив - выполненная работа.

Что касается второго уровня, если Thing - класс, тогда new Thing() будет просто отлично. В противном случае в зависимости от типа вам может понадобиться функция factory или другое выражение для создания.

class Something {
    private things: Thing[][];

    constructor() {
        things = [];

        for(var i: number = 0; i < 10; i++) {
            this.things[i] = [];
            for(var j: number = 0; j< 10; j++) {
                this.things[i][j] = new Thing();
            }
        }
    }
}

Ответ 2

существует тип права? вы, возможно, имеете в виду this

Ответ 3

Если вы хотите сделать это, введите:

class Something {

  areas: Area[][];

  constructor() {
    this.areas = new Array<Array<Area>>();
    for (let y = 0; y <= 100; y++) {
      let row:Area[]  = new Array<Area>();      
      for (let x = 0; x <=100; x++){
        row.push(new Area(x, y));
      }
      this.areas.push(row);
    }
  }
}