typescript - 为什么`downlevelIteration`默认不开启?
问题描述
当目标 ES5 使用扩展运算符...
将 an 转换Iterator
为 anArray
时,它会显示使用-downlevelIteration
编译器选项的错误。一旦开启,点差操作员似乎就可以完美地工作。
我想知道为什么需要指定这个?除了从 tslib 添加更多发出的生成代码之外,启用它时是否有任何缺点/限制?
另一个例子:动态创建 N 数组(例如 3):
[...Array(3).keys()] // output: [0, 1, 2]
错误消息来自tsc
:
类型“IterableIterator”不是数组类型或字符串类型。使用编译器选项“--downlevelIteration”来允许迭代器的迭代。
解决方案
在阅读了发行说明和文章在 TypeScript 中 ES3/ES5 的 Downlevel Iteration 之后,我相信这个问题的答案downlevelIteration
是禁用的,因为您需要(通过配置)决定您希望 TypeScript 如何处理兼容性代码的编译(到支持旧版本的 Javascript)。
正如文章中更冗长的解释所表明的那样,您必须决定是否希望 TypeScript 内联必要的辅助函数(简单,但可能导致更大的生产包大小),或者您是否希望将 TypeScript 配置tslib
为一个依赖项,然后调用它的外部方法。
我强烈推荐阅读TypeScript 中 ES3/ES5 的 Downlevel Iteration 以更深入地理解……并且可能是您最初问题的替代解决方案。
推荐阅读
- mysql - 无法将 AXIS2 Web 服务与 mysql DB 连接。收到以下问题
- python - Python(CPython 实现)函数可以容纳多少个局部变量?
- javascript - 使用 jquery 或 js 当光标在此 div 之外时如何滚动 div 的内容?
- uwp-xaml - 我的透视视图中的 UWP 添加窗格
- java - 带有 JFrame 和 JButton 的 Java ActionListener
- list - 在 Prolog 中将两个列表按组件相乘
- java - 用时间〜O(N)在数组中查找最大不可重复值
- ruby-on-rails - 发送后访问响应状态
- ruby-on-rails - 活动存储 Rails 5.2 的 Blob 错误
- java - 需要计算加载微调器可见的时间