2017-06-06 30 views
0

我正在編寫一個Typescript/React/Redux應用程序,它利用現代ES6 +功能(如生成器和對象傳播)。如果我使用babel-polyfill,我可以使用Typescript來定位ES6嗎?

我目前在我的應用程序中將我的tsconfig.json目標設置爲ES5並且還包括babel-polyfill

因爲ES6在大多數瀏覽器中都是faster而不是ES5,所以我寧願從我的Typescript配置文件中定位ES6。但是,我擔心我無法支持許多瀏覽器。

babel-polyfill是否提供與ES5目標相同級別的ES5支持?

+0

polyfill應該與es5目標一起使用。不是。我不確定鏈接是否顯示es6比es5快。無論如何,這種擔心可以被認爲是不成熟的優化。 – estus

回答

4

babel-polyfill是否提供了與ES5目標相同級別的ES5支持?

babel-polyfill增加了丟失ES6 運行時類和方法。例如,如果運行腳本的瀏覽器沒有PromiseArray.prototype.includes,它會將這些實現添加到全局範圍中,以便在代碼嘗試使用它們時存在。

它不能將ES6 語法的缺失支持添加到瀏覽器。如果您的JavaScript代碼包含ES6語法(例如class,...yield),則ES5瀏覽器將無法解析您的代碼。在運行時沒有額外的JavaScript代碼可以改變瀏覽器解析你的代碼的方式,所以polyfill在這裏沒有幫助。底線:如果您想使用ES6語法並仍支持ES5瀏覽器,則必須將代碼轉換爲ES5(通過將Type5定向到ES5或使用Babel進行轉換)。

1

總之,不,babel-polyfill不提供與transpiling相同水平的ES5支持。 documentation指出它包含一個自定義再生器運行時以及core-js。

您可以查看core-js以查看它是否包含您需要的polyfills。但是,對象擴展語法不能被多重填充,只能進行轉碼。

相關問題