RML010 — a chain written through twice
const blog: { posts: { title: string }[] } = { posts: [{ title: "a" }, { title: "b" }] };
const posts = focusOn(blog).get("posts");
posts.at(0).get("title").set("one");
posts.at(1).get("title").set("two"); // ✗ throws
focusOn(root) captures root once, so the second write is computed from the original value and
silently drops the first edit. The result looks plausible and is missing a change, which is far harder
to find than a throw.
Feed the result back in — focusOn(next).… — or make one and
of the edits. Sharing a prefix to read is fine and never trips this.
Next
- All diagnostics — every code the framework can report.
- Checking your app — the faults proved from the source, before anything runs.