错误报告
我们注意到从4.1.5升级到4.2.3时我们的应用程序发生了重大变化。我们的ts配置。注意。我认为这可能与downlevelIteration”有关:真的
我知道这可能是无效的代码(当我在节点中运行它时,它只是出错了),但typescript允许这样做,我想报告它只是以防万一,如果这是一个问题。如果你认为这是预期的行为,请随时关闭。
{
"compilerOptions": {
"target": "es5",
"downlevelIteration": true,
"module": "commonjs",
"moduleResolution": "node",
"strict": true,
"jsx": "react",
"esModuleInterop": true,
"sourceMap": true,
"noImplicitAny": true,
"resolveJsonModule": true
}
}
🔎检索词
将对象向下扩展到数组中迭代
🕗版本和回归信息
4.2.3
- 这是意外行为
- 这在版本4.1.5和4.2.3之间进行了更改
Playground链接
带有相关代码的Playground链接
💻代码
let arr = []
let testObj: any = { a: 'a', b: 'b' }
arr = [...testObj]
console.log(arr)
🙁实际行为
返回
[]
🙂预期行为
返回
[{
"a": "a",
"b": "b"
}]
1条答案
按热度按时间z5btuh9x1#
testObj
是不可迭代的。大多数JavaScript引擎在这种情况下都会抛出错误 (jsfiddle)。chrome/v8
个未捕获的类型错误:B不可迭代
safari/JavaScriptCore
TypeError:Spread语法要求...可迭代的[Symbol.iterator]是函数
babel
和esbuild
也抛出错误。TypeScript忽略错误并发出空[]
__read
返回b
,因为它没有Symbol.iterator
。所以__spreadArray
接受一个没有.length
属性的对象,并返回一个空数组to
。TypeScript帮助器是否应处理此情况并引发
Error
?/抄送:瑞安·卡瓦诺@rbuckton