Hur initierar jag en flerdimensionell array av objekt i TypeScript?
Jag arbetar på ett projekt där jag behöver procedurgenerera ett antal brickor som definierar ett spelbräde. Min plan är att hålla dessa 'Tile'-objekt i en flerdimensionell array-egenskap hos ett 'Land'-objekt. På detta sätt motsvarar raden och kolumnen i arrayen brickans position, både i arrayen och på spelbrädet. Kort sagt, jag försöker göra något som detta:
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();
Variabeln 'squaredThing' borde vara lika med 25; istället returnerar TypeScript-kompilatorn ett fel som detta:
"error TS2339: Property 'tMethod' does not exist on type 'Thing[]'"
Är användning av flerdimensionella arrayer för att lagra objekt på det här sättet inte möjlig i TypeScript, eller gör jag ett fel i kodstruktur/syntax?
REDIGERA: Syntaxen som anges ovan är faktiskt korrekt, jag hade av misstag lämnat en felsökningsrad i koden, som endast hänvisade till arrayens första dimension, som följer:
testEnv.thingArray[0].tMethod();
Det var detta som orsakade kompilationsfelet.
Svar #1
Du skapade bara en array men du vill ha två, det borde vara:
testEnv.thingArray = [];
testEnv.thingArray[0] = []; // you are missing this
testEnv.thingArray[0][0] = new Thing;
Men felmeddelandet du får är konstigt, det borde klaga på att det inte går att hämta objekt 0 från undefined när du gör:
testEnv.thingArray[0][0] = new Thing;
Svar #2
Jag ser bara ett fel om att referera till tProp som this.tProp
Har du försökt
class Thing {
tProp: number = 5;
tMethod() { this.tProp *= this.tProp;}
}
Allt annat ser giltigt ut.
