typescriptはコンパイルすると素のJSになり型情報がなくなるのでReflectionは基本できない。 for inを使うとプロパティの列挙は出来るがtypescriptのフィールドはそこにデータを代入するまで存在しないのでfor inを実行しても出てこない。
// thisはsampleFieldという名前のフィールド定義を持つクラスのオブジェクトとする
for(var key in this) {
console.log(key + " > " + this[key]); // sampleFieldという名前は出てこないことがある(sampleFieldに値が代入されたら出てくる)
}
実行時にフィールドの型情報を知りたい場合はフィールド名と型名のペアを定義しておく必要がある。例は以下。
getProperties(): { [key: string]: string; } {
return {
"user": "User",
"zip1": "string",
};
}
フィールド定義と二重管理になるが。。しょうがなさそう
参考: