gpt4 book ai didi

javascript - Typescript 转译是否处理从 ES6 到 ES5 的转译?

转载 作者:数据小太阳 更新时间:2023-10-29 03:47:50 29 4
gpt4 key购买 nike

我正在使用 Angular 2 和 TypeScript 编写一个应用程序。我想使用 IE 11+、Chrome 45+ 等支持的 js 方法(特别是数组的“过滤器”)。我的代码能在旧版浏览器上运行吗?当 Typescript 转换为 vanilla js 时,我不确定它对 ES6 特性做了什么。

最佳答案

TypeScript 允许您使用 ES6 的新语言特性,并将这些语言特性转换为 ES5;但是,它不会为 ES6 中存在但 ES5 中不存在的内置函数 添加 polyfill。

如果您使用的内置函数仅存在于 ES6 中并且以 ES5 为目标,那么您将需要包含必要的 polyfill 以使代码在 ES5 环境中工作。

示例

例如,fill是在 Array 上发现的新功能ES6 中的原型(prototype)。

const result = ["first", "second"].fill("all");

当你以 ES6 为目标时,一切都很好。编译器将包含 lib.es6.d.tsfill 的定义。而不是提示,因为它假定您将在 fill 所在的 ES6 环境中运行代码函数存在。

但是,当您以 ES5 为目标时,它不会包含 lib.es6.d.ts 并且会告诉您该函数在 ES5 环境中不存在:

error TS2399: Property 'fill' does not exist on type 'string[]'.

要解决这个问题,您需要添加 fillArray<T>项目定义文件中的接口(interface):

interface Array<T> {
fill(value: T, start?: number, end?: number): this;
}

并包含一个 polyfill .或者使用自动为您执行的操作。

关于javascript - Typescript 转译是否处理从 ES6 到 ES5 的转译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41173215/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com