Ich arbeite an einem Projekt, bei dem ich prozesstechnisch eine Anzahl von Kacheln erzeugen muss, die ein Spielbrett definieren. Mein Plan ist, diese "Tile" -Objekte in einer mehrdimensionalen Array-Eigenschaft eines Land-Objekts zu halten. Auf diese Weise entsprechen die Zeile und die Spalte des Arrays der Position der Kachel, sowohl im Array als auch auf dem Spielbrett. Kurz gesagt, ich versuche, etwas in der Art zu tun:Wie initialisiere ich ein mehrdimensionales Array von Objekten in 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();
Die Variable 'squaredThing' sollte gleich 25; anstelle der Typoskript Compiler gibt einen Fehler wie folgt aus:
"error TS2339: Property 'tMethod' does not exist on type 'Thing[]'"
Ist Verwendung von mehrdimensionalen Arrays zum Speichern von Objekten auf diese Weise nicht möglich, in Typoskript, oder mache ich einen Fehler in Codestruktur/Syntax?
EDIT: Die Syntax oben aufgeführt ist tatsächlich richtig, ich hatte fälschlich ein Debugging-Zeile in dem Code nach links, die nur von der Anordnung zu der ersten Dimension bezeichnet, wie folgt:
testEnv.thingArray[0].tMethod();
Es war, dass verursachte den Kompilierungsfehler.
Ich kann das Problem mit dem Code nicht reproduzieren, den Sie zur Verfügung gestellt haben, es funktioniert hier richtig. Könnte es ein Tippfehler in Ihrer tatsächlichen Quelle sein? Wenn ich 'testEnv.thingArray [0] .tMethod() schreiben;' ist der Fehler, den ich bekomme, identisch mit dem, was Sie beschrieben haben, was erwartet wird. –
Was John White gesagt hat, ist genau richtig, ich hatte versehentlich eine Debugging-Zeile hinterlassen, die sich nur auf die erste Dimension des Arrays bezieht, und das war es, was den Fehler beim Kompilieren verursachte. Danke für die Hilfe! – calebjmatthews