问题描述
在我的代码中,我有一个名为range
的函数,它可以产生范围。实现如下:
export const range = (min: number,max: number) => {
// ...
return {
// ...
*[Symbol.iterator]() {
let n = min
while (n <= max) yield n++
}
}
}
如您所料, Array.from(range(1,5))
给出[1,2,3,4,5]
。但是,[...range(1,5)]
给出[{[Symbol.iterator]: ƒ}]
(长度1的数组,包含范围对象),这显然是不正确的。如果我将range
附加到window
对象上并从浏览器控制台调用它,则[...range(1,5)]
将给出[1,5]
,如预期的那样。
在进一步调试后,似乎已将传播运算符转译为此:
// console.log(() => [...range(1,5)])
ƒ () { return [].concat(range(1,5)) }
如果正在传播的是数组,则可以正常工作,但对于其他类型的可迭代对象则失败。
.tsconfig
与我以前使用的相同,将ESNext
定位为downlevelIteration
或true
并没有任何作用,所以我我非常有信心问题不会出现。
这似乎与Babel有关,但是我不知道如何正确配置它。旧版浏览器支持不是很多问题-如果它在最新的Chromium和Firefox上运行,我会很高兴。
false
:
package.json
"browserslist": "last 3 chrome versions,last 3 firefox versions"
:
.babelrc
{ "presets": [ [ "preact-cli/babel",{ "modules": "commonjs" } ] ] }
与此处的preact.config.js
permalink相同。这是相关的部分:
preact.config.js
我将如何解决这个问题?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)