Bri*_*unt 6 typescript ecmascript-6
我试图让 Typescript 正确编译以下生成器循环,它在现代浏览器中按预期工作:
/** Should print "x= 1 y= 2" **/
function* gen() { yield [1, 2] }
for (const [x, y] of gen()) { console.log("x=", x, "y=", y) }
Run Code Online (Sandbox Code Playgroud)
但通过 Typescript 运行后失败了。将以上内容放入Typescript Playground中说明了失败,即for-of转换为数组迭代循环,但生成器返回一个对象。
Typescript 似乎已损坏,如果是这样,这是一个已知问题吗?我在https://github.com/Microsoft/TypeScript上没有看到它。
最好的解决方法是什么?在生成器函数上使用Array.from让我觉得最连贯?
你是对的,问题是循环for of正在被转换为 es5/es3 目标中的简单数组循环。
如果您添加"downlevelIteration": true到您的tsconfig.json,它应该可以工作,并且生成的代码将看起来完全不同。
请注意,如果您有其他for of循环在普通数组上进行迭代,则下层迭代将导致性能受到轻微影响。(这就是为什么下层迭代隐藏在标志后面)。
另外,我会阅读这篇文章,特别是关于“使用 --importHelpers 和 tslib 减少代码大小”的部分。
| 归档时间: |
|
| 查看次数: |
2906 次 |
| 最近记录: |