Я работаю над проектом, где мне нужно процедурно генерировать множество плиток, которые определяют игровое поле. Мой план состоит в том, чтобы удерживать эти объекты «Tile» в многомерном массиве объекта «Земля». Таким образом, строка и столбец массива соответствуют положению плитки, как в массиве, так и на игровой доске. Короче говоря, я пытаюсь сделать что-то вроде этого:Как инициализировать многомерный массив объектов в TypeScript?
class Thing {
tProp: number = 5;
tMethod() {this.tProp *= this.tProp;}
}
class Environment {
thingArray: Thing[][];
}
var testEnv = new Environment;
testEnv.thingArray = [];
testEnv.thingArray[0] = [];
testEnv.thingArray[0][0] = new Thing;
var squaredThing = testEnv.thingArray[0][0].tMethod();
Переменная «squaredThing» должен быть равен 25; вместо машинописи компилятор возвращает ошибку, как это:
"error TS2339: Property 'tMethod' does not exist on type 'Thing[]'"
является использование многомерных массивов для хранения объектов таким образом, не представляется возможным в машинописи, или я делаю ошибку в структурах коды/синтаксисе?
EDIT: Синтаксис перечисленных выше на самом деле правильно, я по ошибке оставил отладки строку в коде, который упоминается только в первом измерении массива следующим образом:
testEnv.thingArray[0].tMethod();
Именно это вызвала ошибку компиляции.
Я не могу воспроизвести проблему с кодом, который вы предоставили, он работает правильно здесь. Может быть, это опечатка в вашем реальном источнике? Если я напишу 'testEnv.thingArray [0] .tMethod();' ошибка, которую я получаю, идентична тому, что вы описали, что ожидается. –
Что Джон Уайт сказал точно, я случайно оставил строку отладки, ссылаясь исключительно на первое измерение массива, и именно это метало ошибку при компиляции. Спасибо вам за помощь! – calebjmatthews