У меня есть простой поиск, который я реализовал с помощью 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!)
}
}
Когда я пытаюсь изменить возвращенный объект
let folders = allFolders();
let t = folders.next().value;
t.name = "sdvs";
Я получаю
TypeError: Cannot assign to read only property 'name' of object '#<Object>'
Если я получу доступ к объекту напрямую (он находится в глобальном масштабе в этом файле), все в порядке. Я потратил несколько часов на это сейчас, и я совершенно сбит с толку. Это просто невозможно? Почему это может происходить?