[英]Why is yelded object '#<Object>' read-only?
我使用 yield 实现了一个简单的搜索 - 通过递归文件夹结构运行,产生所有文件夹。 我的实现相当简单,我删除了所有“const”(以防万一)
function *folders(f: Folder) : IterableIterator<Folder> {
yield f;
if (f.folders)
{
for (let sf of f.folders) {
yield* folders(sf);
}
}
}
function *allFolders() : IterableIterator<Folder> {
for (let p of projects) {
yield* folders(p.project.rootFolder!)
}
}
当我尝试修改返回的 object
let folders = allFolders();
let t = folders.next().value;
t.name = "sdvs";
我明白了
TypeError: Cannot assign to read only property 'name' of object '#<Object>'
如果我直接访问 object (它位于此文件中的全局 scope 中)就可以了。 我现在已经花了几个小时在这上面,我完全感到困惑。 这根本不可能吗? 为什么会发生这种情况?
啊 - 我的问题是我在我的减速器中使用了 immer(某处备份树),在某些时候这个实例被浅克隆并传递给我的减速器(它是假数据库的数据)。
通过在从我的假数据库返回任何数据之前进行深度克隆来修复。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.