2016-05-06 33 views
2

私はゲームボードを定義するいくつかのタイルを手続き的に生成する必要があるプロジェクトに取り組んでいます。私の計画は、これらの 'Tile'オブジェクトを 'Land'オブジェクトの多次元配列プロパティに保持することです。このようにして、配列の行と列は、配列とゲームボードの両方のタイルの位置に対応します。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(); 

には、このことでしたコンパイルエラーが発生しました。

+0

指定したコードで問題を再現できません。正しく動作します。あなたの実際のソースの入力ミスでしょうか? 'testEnv.thingArray [0] .tMethod();'と書くと、私が得るエラーはあなたが記述したものと同じです。 –

+1

John Whiteが言ったことはまさに正しいです。私は誤って配列の最初の次元だけを参照するデバッグ行を残していました。コンパイル中にエラーを投げていました。お手伝いありがとう! – calebjmatthews

答えて

0

は1つのだけの配列を作成したが、あなたは2をしたい、次のようになります。

testEnv.thingArray = []; 
testEnv.thingArray[0] = []; // you are missing this 
testEnv.thingArray[0][0] = new Thing; 

しかし、あなたは、エラーメッセージが奇妙である、それはあなたがやっているときundefinedからアイテム0を取得することができない文句を言う必要があります:

testEnv.thingArray[0][0] = new Thing; 
+0

あなたが提案した行がなぜ必要なのか理解できると思います。私はその行に追加しましたが、私はまだ同じエラーを受けています。エラーのテキストは、「Thing []」がそれ自身のクラスであることを期待しているように聞こえるでしょう。 – calebjmatthews

0

私だけthis.tProp

としてT propはを参照に関するエラーを参照してください、あなたを持っています試しました

class Thing { 
    tProp: number = 5; 
    tMethod() { this.tProp *= this.tProp;} 
} 

他のすべてが有効です。

+1

それは良いキャッチだった、私は上記の単純化された例でそれを逃したが、実際のコードで 'this.row'として正しく言及したので、問題ではないはずです。 – calebjmatthews

関連する問題