TypeScriptのfor in文はなんだかややこしいです

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文を使ったほうがいいですね。

TypeScriptのfor in文はなんだかややこしいです

TypeScriptのfor in文はなんだかややこしいです

コメント

株式会社CONFRAGE ITソリューション事業部をもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む

タイトルとURLをコピーしました