症状 §
既存のWebプロジェクト(TypeScriptファイル含む)をVisual Studio2017で開き、デバッグ実行させたとき、WebブラウザにChromeを指定していると実行できるがIEを指定しているとエラーが出てできない。
原因 §
プロジェクトのプロパティのTypeScriptのターゲットバージョンがEcmaScript6になっている。ChromeはEcmaScript6に対応しているがIEは対応していない。
解決方法 §
プロジェクトのプロパティのTypeScriptのターゲットバージョンがEcmaScript5に変更する。
感想 §
「EcmaScript6は徐々に使えるようになってきているが、まあ当分はEcmaScript5を意識しないとダメだろうね」
「かなりの割合のWebブラウザが対応しているとは、非対応の人が一定数いるってことだね」
「そう。どうしても、EcmaScript6固有の何かの機能を使いたいのならともかく、別にどうでもいいのなら、TypeScriptでEcmaScript5のコードを出力させた方が良いのかもしれない」
追記 §
「なぜこういう問題が起きるのかというと、以下のような状態があるからだ」
- EcmaScript6に設定されたプロジェクトがある
- しかし、EcmaScript6を必須とするコードを生成するソースコードは存在しない
「設定がEcmaScript6であっても、IEで動くわけだね」
「依存コードは無いからね。でも、環境が変われば状況も変化する」
「何かの理由でEcmaScript6対応コードが入った瞬間にエラーで落ちるわけだね。たとえ、その直前まで動いていたとしても」
「そうだ。何気ないソースの書き換え一発でそうなる可能性もある。あるいは、コンパイラが生成するコードが変化した結果、そうなることもあるだろう。EcmaScriptのバージョン設定は正しく行っておこう。TypeScript活用のお約束だ」