__Babel__でトランスコンパイルしているのですが、__IE11__でサポートしていないコンストラクタ関数__Headers()__などが機能しません。
これはあくまで「記法」のみが変換・最適化されるからでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。

回答1件
3
ベストアンサー
IE11のようなレガシーブラウザには実装されていないコンストラクタや関数を使えるようするには@babel/polyfillを使う必要があります。polyfillを正しく組み込めば、ES2015以降に追加されたPromise等もIE11で使用できるようになります。ただし、ES2018全ての機能をサポートしているわけでは無い事に注意が必要です。
なお、@babel/polyfill以外にもpolyfillは存在し、そちらを使うという手段もあります。全部入りpolyfillは小さくないサイズですので、必要な機能だけを絞って使う、特定機能だけのpolyfillを使うというのもできます。細かいことはpolyfillというキーワードで検索してみてください。
【追記】
@babel/polyfillについてもう一つ注意しておかなくてはなりません。それは、このpolyfillはECMASCriptのpolyfillであって、JavaScriptのpolyfillではないと言うことです。JavaScriptの言語仕様はECMAScriptですが、そこにブラウザやネットワーク等で使う各APIを追加することでJavaScriptになっています。このブラウザやネットワーク等に関わるようなAPI部分はECMAScriptの仕様外であるため、babelでは一切考慮されません。
HeadersやfetchなどはJavaScript側に含まれるAPIです。ですので、@babel/polyfillでは対応できません。では、全く対応できないかというとそうではありません。それらの新しいAPIについては個別にpolyfillが存在する場合があるからです。
github/fetch: A window.fetch JavaScript polyfill.
上はFetch Standardのpolyfillです。fetchおよびfetch周りのAPIを網羅しています。他にも必要になれば、個別にpolyfillを探しだし、追加することで、どうにか動くようにできる場合があります。
ただし、注意してください。polyfillが実現出来るのは、古い実装でもその動作をエミュレートできる場合だけです。ブラウザそのものにAPIがないと不可能というものや、一部制限がでるといったこもあります。IE11については、どこかで妥協することも必要になるかも知れません。
投稿2019/04/18 22:11
編集2019/04/19 10:27総合スコア21727
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
同じタグがついた質問を見る
Babelは、JavaScriptの次世代仕様であるECMAScriptのコンパイラ。次世代の標準機能を用いて記述されたコードを、それらの機能に対応していないブラウザでも動作するコードに変換することができます。
Internet Explorer(IE;MSIE)はマイクロソフトが開発したウェブブラウザです。Microsoft Windowsに組み込まれています。
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。
退会済みユーザー
2019/04/19 02:20
2019/04/19 10:25