我正在开发一个项目,我需要在程序上生成一些定义游戏板的图块。我的计划是将这些“Tile”对象保存在“Land”对象的多维数组属性中。这样,阵列的行和列对应于图块和游戏板上的图块的位置。简而言之,我试图做这样的事情:
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;而是TypeScript编译器返回如下错误:
"error TS2339: Property 'tMethod' does not exist on type 'Thing[]'"
使用多维数组以这种方式存储对象在TypeScript中是不可能的,还是我在代码结构/语法中出错?
编辑:上面列出的语法实际上是正确的,我错误地在代码中留下了一个调试行,它只引用了数组的第一个维度,如下所示:
testEnv.thingArray[0].tMethod();
正是这导致了编译错误。
答案 0 :(得分:0)
你只创建了一个数组,但你想要两个,应该是:
testEnv.thingArray = [];
testEnv.thingArray[0] = []; // you are missing this
testEnv.thingArray[0][0] = new Thing;
但是您收到的错误消息很奇怪,它应该抱怨您在执行时无法从undefined
获取第0项:
testEnv.thingArray[0][0] = new Thing;
答案 1 :(得分:0)
我只看到有关将tProp引用为 this.tProp
的错误你试过吗
class Thing {
tProp: number = 5;
tMethod() { this.tProp *= this.tProp;}
}
其他一切看起来都有效。