Ale*_* B. 11 javascript typescript angular
我正在使用Angular 2和TypeScript编写应用程序.我想使用IE 11 +,Chrome 45+等支持的js方法(尤其是数组的'过滤器').我的代码是否可以在旧版浏览器上运行?由于Typescript转换为vanilla js,我不确定它对ES6功能的作用.
Dav*_*ret 18
TypeScript允许您使用ES6中的新语言功能,它会将这些语言功能转换为ES5; 但是,它不会为ES6中存在的内置函数添加polyfill,但在ES5中不存在.
如果您使用的是仅存在于ES6中且面向ES5的内置函数,则需要包含必要的polyfill,以使代码在ES5环境中工作.
例
例如,在ES6中的原型fill上找到了一个新功能Array.
const result = ["first", "second"].fill("all");
Run Code Online (Sandbox Code Playgroud)
当你瞄准ES6时一切都很好.编译器将包含lib.es6.d.ts及其定义fill而不是抱怨,因为它假定您将在ES6环境中运行该fill函数所在的代码.
但是,当您定位ES5时,它将不包含lib.es6.d.ts并且会告诉您ES5环境中不存在该功能:
错误TS2399:类型'string []'上不存在属性'fill'.
为了解决这个问题,你需要添加fill到Array<T>在您的项目定义文件的界面:
interface Array<T> {
fill(value: T, start?: number, end?: number): this;
}
Run Code Online (Sandbox Code Playgroud)
并包括一个polyfill.或者使用自动为您做的事情.
| 归档时间: |
|
| 查看次数: |
3965 次 |
| 最近记录: |