Immutable array updates use map or spread to build a replacement array.

Array Updates

updates.ts
type Item = {
    id: number;
    done: boolean;
};

const targetId: number = ;
const items: Item[] = [
    { id: 1, done: false },
    { id: 2, done: false },
    { id: 3, done: false },
];

const nextItems: Item[] = items.map((item) =>
    item.id === targetId ? { ...item, done: true } : item
);

console.log(items.map((item) => item.done).join(","));
console.log(nextItems.map((item) => item.done).join(","));
type Item = {
    id: number;
    done: boolean;
};

const targetId: number = ;
const items: Item[] = [
    { id: 1, done: false },
    { id: 2, done: false },
    { id: 3, done: false },
];

const nextItems: Item[] = items.map((item) =>
    item.id === targetId ? { ...item, done: true } : item
);

console.log(items.map((item) => item.done).join(","));
console.log(nextItems.map((item) => item.done).join(","));
type Item = {
    id: number;
    done: boolean;
};

const targetId: number = ;
const items: Item[] = [
    { id: 1, done: false },
    { id: 2, done: false },
    { id: 3, done: false },
];

const nextItems: Item[] = items.map((item) =>
    item.id === targetId ? { ...item, done: true } : item
);

console.log(items.map((item) => item.done).join(","));
console.log(nextItems.map((item) => item.done).join(","));
array map update `map` can return a changed copy for one item and the original item for everything else.