当针对 ES5 / ES3 时,Typescript 会转译什么?

2023-12-30

我试图了解 Typescript 编译器何时会转译代码以使其与我指定的目标 ECMAScript 版本(ES5 或 ES3)兼容。

例如,TSC 将转译for(var int of intArray)很好,但它不转译Number.isInteger()(根据说法,这是 ES6 的一项功能w3学校 https://www.w3schools.com/jsref/jsref_isinteger.asp).

Number.isInteger()IE

什么可以被转译,什么不会?我最初预计所有内容都会被转译,这样我就不必跟踪这样的事情,但事实似乎并非如此。


打字稿转译物但不polyfill。因此,一种思考方式是,任何在你的代码中无效的语法target转译的到有效的语法。例如,当使用class您的目标设置为的关键字ES5,它将转译:

class Greeter {
}

to this:

var Greeter = /** @class */ (function () {
    function Greeter() {
    }
    return Greeter;
}());

(你可以用这个来玩更多here http://www.typescriptlang.org/play/.)

另一方面,它不会添加缺失的功能,而您必须这样做polyfill你自己。Number.isInteger()已验证ES5语法,它只是不存在于ES5。您可以通过导入来自行填充它babel-polyfill https://babeljs.io/docs/usage/polyfill/(它使用core-js https://github.com/zloirock/core-js在引擎盖下)或使用类似的服务polyfill.io https://polyfill.io/v2/docs/.

Note:不要混淆lib带有polyfills的选项。这does not填充特性。它只是告诉 TypeScript 表现得好像这些 ES 版本的功能都存在,因此它会适当地对它们进行类型检查。对于您支持的浏览器,您仍然需要自己处理 polyfill 部分。如果您没有指定适当的libs,TypeScript 会抱怨它不知道什么Number.isInteger()代表。

我不知道 TypeScript 转译功能的完整列表,但您可以查看 TypeScript+ 的表格core-js填充物here http://kangax.github.io/compat-table/es6/。 更多关于polyfills vs transpilation 的阅读here https://hackernoon.com/polyfills-everything-you-ever-wanted-to-know-or-maybe-a-bit-less-7c8de164e423.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当针对 ES5 / ES3 时,Typescript 会转译什么? 的相关文章

随机推荐

  • 单击时更改列表框的颜色

    我正在尝试将列表框的背景颜色更改为白色 我已成功将其更改为红色 以显示丢失的输入 但我希望在单击时将其更改回白色 我的代码是 Private Sub lstEqualToOrAround Click lstEqualToOrAround B
  • Postgresql 中的 RRULE 解析

    目标 从 RRULE 字符串 即 FREQ WEEKLY INTERVAL 2 COUNT 8 WKST SU BYDAY TU TH 和开始时间戳 由于这些时间会根据用户的心血来潮而改变 因此需要 postgresql 来实现 1 严格的
  • 如何在Python 3中从字节缓冲区构造内存中的TarFile对象?

    是否可以使用包含 tar 数据的缓冲区在内存中创建 TarFile 对象 而无需将 TarFile 写入磁盘并再次打开它 我们获取通过套接字发送的字节 像这样的东西 import tarfile byte array client read
  • SQL Server 二进制(128)从小端转换为大端

    如何在 SQL Server 中将二进制 128 从小端转换为大端 尝试这样的事情 declare little binary 4 set little 0x02010000 select little bigEndian cast rev
  • 使用 SSH.NET 库从 .NET 连接到 MySQL

    我正在开发一个网页 ASP NET C 通过 SSH 查询远程服务器上的 MySQL 数据库 我正在使用这两个库 mysql connector net 6 9 7 和 Renci SshNet dll 我可以通过 SSH 连接使用远程服务
  • NineOldAndroids 动画不适用于 API > 10

    我在用NineOldAndroid执行动画的库 对于 API10 应用程序强制关闭 这是我的代码 import static com nineoldandroids view ViewPropertyAnimator animate imp
  • 如何阻止 Intellij 创建 src/main/java 和 src/main/scala-x 文件夹?

    我在 Intellij 15 0 2 中有一个仅用于 scala 编程的 SBT 项目 由于某种原因 该项目不断在我的项目中创建以下文件夹 src 主 java src main scala 2 10 src main scala 2 11
  • 如何获取从 PUT 方法传递的数据

    我正在为 Laravel 创建一个 API 我使用 PUT 方法来更新数据 我使用 PUT 方法通过 Postman 发送数据 在我的控制器中 我有一个空数组 如何访问传递的数据 在我的路线中 我有 Route put vehicletyp
  • 如何在 FastAPI 中上传 CSV 文件并将其转换为 Pandas Dataframe?

    我想将文件上传到 FastAPI 后端并将其转换为 Pandas DataFrame 但是 我似乎不明白如何使用 FastAPI 来做到这一点UploadFile https fastapi tiangolo com tutorial re
  • React Router Switch 和确切路径

    我读过这份文件反应路由器开关 https github com ReactTraining react router blob master packages react router docs api Switch md 我了解交换机和路
  • 周围物体算法

    我正在开发一款游戏 该位置可能只存在一个对象 x y where x and y are ints 例如 一个对象可能存在于 0 0 也可能不存在 但不可能同时存在多个对象 我正在尝试决定使用哪个 STL 容器来解决当前的问题以及解决此问题
  • iPhone 相机对焦

    我使用下面的代码来对焦 iPhone 相机 但它不起作用 我从Apple的AVCam示例代码中获取了这段代码 我做错了什么吗 有什么方法可以 检测iPhone是否对焦 void focusAtPoint CGPoint point AVCa
  • Chrome 有内置的调用堆栈吗?

    在 Visual Studio 中 我习惯于在任何断点处显示调用堆栈 Chrome 是否具有调用堆栈功能 可以让我查看断点之前的函数 如果没有 是否有替代方案 适用于 Chrome 的第三方解决方案 供开发人员用来查看哪些函数导致了断点 编
  • Microsoft SQL Server 中表的事务隔离级别

    这更多的是对我想法的确认 而不是一个问题 可以在 SQL Server 中以表为基础更改隔离级别 还是只能在会话级别上定义 更改 如下面的语句所示 SET TRANSACTION ISOLATION LEVEL SERIALIZABLE 那
  • 点击 NavigationLink 后如何执行操作?

    我的第一个视图中有一个加号按钮 看起来像一个 FAB 按钮 我想在点击 NavigationLink 中包含的某个步骤后隐藏它 到目前为止我有这样的事情 ForEach 0 lt 12 item in NavigationLink dest
  • Winforms ListView - 双击时停止自动检查

    如何使列表视图在双击某个项目时不自动检查该项目 我可以尝试挂钩 MouseDoubleClick 事件 并将 Checked 属性设置为 false 但这感觉有点像黑客 当实际检查某个项目时 我还会运行相当昂贵的计算 并且不希望此代码在双击
  • java中如何识别检查异常和非检查异常?

    在阅读有关异常的内容时 我总是会遇到受控异常和非受控异常 所以想知道如何区分哪个是什么 编辑 我想知道我是否创建任何异常类 那么如何创建为已检查或未检查的异常类 每个的意义是什么 All Throwables 除了以下子类java lang
  • 在未安装 Excel 的服务器上生成 Excel 文件

    我在用Microsoft Office Interop Excel并使用生成 Excel 文件SaveAs方法 这一切都可以在安装了 Excel 的计算机上正常运行 但是 我的服务器没有安装 Excel 如何生成我的文件 If you ge
  • 从 Shell 脚本将日期传递给 C 程序

    我想将用户以 YYYY MM DD HH24 MI SS 格式输入的日期传递给 C 程序 该程序进一步在数据库中输入条目 当我将命令行参数中输入的日期作为 2010 07 15 12 13 14 传递时 C 程序将其视为 2 个参数而不是
  • 当针对 ES5 / ES3 时,Typescript 会转译什么?

    我试图了解 Typescript 编译器何时会转译代码以使其与我指定的目标 ECMAScript 版本 ES5 或 ES3 兼容 例如 TSC 将转译for var int of intArray 很好 但它不转译Number isInte