私は単純な問題に苦しんでいます(しかし、それはすでに私に頭痛を与えています)。 私は以下のコードがあります:「未定義」として、私はなぜが、私のためにオブジェクト1リターン知らないと私は「this.array [0]」はこの型付き配列(Typescript)の未定義のプロパティですか?
のようなJSONを返す強調するときinterface IFoo{
ReturnFirstBarObject1(): string;
FillBarArray(array: Array<Bar>): void;
}
class Bar {
object1: string;
object2: string;
}
class Foo implements IFoo{
array: Array<Bar>;
constructor(){
this.array = new Array<Bar>();
}
public ReturnFirstBarObject1(): string {
return this.array[0].object1;
}
public FillBarArray(array: Array<Bar>): void {
this.array = array;
}
}
$(document).ready(function(){
var foo = new Foo();
$.get('url/getBars?FooID=1')
.done(function(data: any){
foo.FillBarArray(data);
});
var object1 = foo.ReturnFirstBarObject1();
});
を
"{'object1' : 'someString', 'object2' : 'someString'}"
object1にアクセスしたいが、それは未定義を返し、typescriptが配列オブジェクトをBarとして認識するため、Jsonで回避策を実行できない。
これがなぜ起こっているのか、誰が知っていますか、Barプロパティに正しくアクセスするにはどうすればよいですか?あなたのAJAX呼び出しは、したがって、あなたが未定義のエラーを取得している、配列を埋める前に
'string object1 = ...'は有効な構文ではありません。多分あなたは 'let object1:string = ...'を意味しましたか?また 'Foo'をインスタンス化しますが、' array'に値を代入することはないので、 'array [0]'は存在しません。 – Aaron
クラスのバーがあり、そのプロパティにアクセスしたい場合、objOfBar ['object1']やobjOfBar.object1のような文字列インデクサーを使用してBarのオブジェクトから直接使用することができる場合は、ここで達成しようとしていることがわかりません –
@申し訳ありませんが、私はすでにそれを編集しています。値はリターンによって提供されます。実際の問題は、 'undefined'を返す値です –