簡體   English   中英

如果我使用babel-polyfill,我可以使用Typescript定位ES6嗎?

[英]Can I target ES6 with Typescript if I am using babel-polyfill?

我正在編寫一個Typescript / React / Redux應用程序,它利用了現代ES6 +功能,如生成器和對象傳播。

我目前正在將我的tsconfig.json目標設置為ES5並在我的應用程序中包含babel-polyfill polyfill。

由於在大多數瀏覽器中ES6比ES5 ,我更願意從我的Typescript配置中定位ES6。 但是,我擔心我將無法支持盡可能多的瀏覽器。

babel-polyfill是否提供與轉換為ES5目標相同水平的ES5支持?

babel-polyfill是否提供與轉換為ES5目標相同水平的ES5支持?

沒有。

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

它無法為瀏覽器添加缺少對ES6 語法的支持。 如果您的JavaScript代碼包含ES6語法(例如class...yield ),那么ES5瀏覽器將無法解析您的代碼 運行時沒有額外的JavaScript代碼可以改變瀏覽器解析代碼的方式,因此polyfill對此沒有幫助。

底線:如果您想使用ES6語法並且仍支持ES5瀏覽器,則必須將代碼轉換為ES5(通過從TypeScript定位ES5,或使用Babel轉換)。

簡而言之,不,babel-polyfill不提供與轉化相同水平的ES5支持。 文檔聲明它包括自定義再生器運行時以及core-js。

您可以查看core-js以查看它包含您需要的polyfill。 但是,對象擴展語法不能被填充,只能被轉換。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM