[英]Does Typescript transpilation handle transpiling ES6 to ES5?
我正在使用Angular 2和TypeScript编写应用程序。 我想使用IE 11 +,Chrome 45+等支持的js方法(尤其是数组的'过滤器')。我的代码是否可以在旧版浏览器上运行? 由于Typescript转换为vanilla js,我不确定它对ES6功能的作用。
TypeScript允许您使用ES6中的新语言功能 ,它会将这些语言功能转换为ES5; 但是,它不会为ES6中存在的内置函数添加polyfill,但在ES5中不存在。
如果您使用的是仅存在于ES6中且面向ES5的内置函数,则需要包含必要的polyfill,以使代码在ES5环境中工作。
例
例如, fill
是在ES6中Array
的原型中找到的新函数。
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>
接口添加fill
:
interface Array<T> {
fill(value: T, start?: number, end?: number): this;
}
并包括一个polyfill 。 或者使用自动为您做的事情。
是的,如果您将tsconfig.json设置为目标ES5,则可以
设置target: "ES5"
tsconfig.json编译器选项中的target: "ES5"
或--target ES5
for CLI
至于ES6,IDK的内置功能,但我会将babel-loader添加到webpack,grunt,gulp等,以自动填充这些功能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.