我寫的用角2和打字稿的應用程序。我想用一個js方法(特別是「過濾器」的陣列),它支持IE 11+,鉻45+等 將我的代碼能夠在舊的瀏覽器上運行?當Typescript轉換爲vanilla js時,我不確定它如何處理ES6功能。Typescript轉換是否將ES6轉換爲ES5?
4
A
回答
9
TypeScript允許您使用來自ES6的新的語言功能,它會將這些語言功能轉換爲ES5;但是,它不添加內置存在於ES6功能爲polyfills,但在ES5不存在。
如果您使用的是內置的,只有在ES6存在,並都瞄準ES5功能,那麼你將需要包括爲了必要的polyfills爲代碼在ES5環境中工作。
例
例如,fill
是Array
的原型在ES6發現了一個新的功能。
const result = ["first", "second"].fill("all");
當你瞄準ES6時一切都很好。編譯器將包含lib.es6.d.ts,其定義爲fill
,不會抱怨,因爲它假定您將在存在fill
函數的ES6環境中運行代碼。
當你的目標ES5,但是,它不包括lib.es6.d.ts並會告訴你,這個功能並沒有在ES5環境中存在:
錯誤TS2399:房產「填充'在類型'string []'上不存在。
爲了解決這個問題,你需要添加fill
到Array<T>
接口的定義文件在您的項目:
interface Array<T> {
fill(value: T, start?: number, end?: number): this;
}
,包括一個polyfill。或者使用自動爲你做的事情。
0
是的,它可以的,如果你設置tsconfig.json目標ES5
設置tsconfig.json編譯器選項target: "ES5"
或--target ES5
的CLI
至於ES6的內置功能,IDK,但我會將babel-loader添加到webpack,grunt,gulp等,以自動填充這些功能。
相關問題
- 1. Webpack不能將ES6轉換成ES5
- 2. 將語句轉換爲ES5
- 3. 將SCSS編譯爲CSS並同時將ES6轉換爲ES5
- 4. 如何轉換es5需要es6導入
- 5. 使用babel將es6轉換爲es5然後使用Browserify捆綁
- 6. 使用webpack而無需將es6轉換爲es5代碼
- 7. 使用屬性和方法將getInitialState(ES5)轉換爲this.state(ES6)
- 8. 如何使用babel以編程方式將es6轉換爲es5?
- 9. 轉換爲TypeScript
- 10. 將TypeScript轉換爲Dart
- 11. Typescript將sting轉換爲datetime
- 12. 將C#轉換爲TypeScript
- 13. 將JavaScript轉換爲TypeScript
- 14. 將CoffeeScript轉換爲TypeScript
- 15. 將ES5 Mixins轉換爲高階組件
- 16. 如何使用'間隔'與反應,從ES5轉換爲ES6
- 17. babel es5 to es6將更少的擴展名轉換爲導入的css
- 18. 將多個es6轉換爲多個es5文件以創建npm包
- 19. 將threejs的IIFE函數轉換爲es6?
- 20. 將ReactJS代碼轉換爲ES6語法
- 21. 如何轉換ES2017到ES5
- 22. Babel [karma-babel-preprocessor]不轉換ES6-> ES5進行Karma測試
- 23. 如何ES5轉換器ES6在終極版的減速
- 24. 從Javascript轉換爲Typescript
- 25. JS代碼轉換爲Typescript
- 26. 如何將此javascript轉換爲Typescript?
- 27. 將SharpKit的JsObject轉換爲TypeScript
- 28. 將JSON對象轉換爲Typescript類
- 29. 將角度材質轉換爲TypeScript
- 30. 將一個類從javascript轉換爲typescript
http://www.typescriptlang.org/play/index.html – Sasxa
['Array.filter()'](https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux /陣列/過濾器)與IE 9+和所有其他瀏覽器兼容。它不是用ES6 – nicovank
請注意,這種方法可以通過polyfills加入,也介紹;你不一定需要翻譯。 – jonrsharpe