[英]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.