TypeScriptのfor in文はなんだかややこしいです
JSにfor in文があるようにTypeScriptにもfor in文があります。
ただし、JSもそうですが、TypeScriptのfor in文は少しややこしくて、動きとしては以下のとおり動作するのです。
オブジェクトの列挙可能なプロパティに対し任意の順番で反復処理を行います。
とあります。以下のTypeScriptを実行します。
const arr = [10,20,30];
for(let i in arr){
console.log(i); // 0,1,2と表示される
}
イテレータブルなオブジェクトのプロパティが3つあるので、それを順に処理します、ってな感じでしょうか。
配列要素を出力したければ以下のように書きます。
const arr = [10,20,30];
for(let i in arr){
console.log(arr[i]); // 10,20,30と表示される
}
for in文は好きじゃないから使わない派ですが、enumをfor inすると変な結果になります。
enum Sex {
M,
F
}
for(let i in Sex) {
console.log(i);
}
結果は以下のようになります。
0 1 M F
もう意味わかんないですね。トランスパイルしたJSを見てみるとSexと言う変数は以下のようなオブジェクトになっています。
{ '0': 'M', '1': 'F', M: 0, F: 1 }
このプロパティが順次出力されたということですね。for of文を使ったほうがいいですね。

KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES20xx),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^


コメント