Operator precedence matters: parentheses decide whether you intersect the union as a whole or only one side. (A | B) & C means “either A or B, plus C”. Use this to say every sellable item also has audit fields.
// coding example
type A = { a: 1 };
type B = { b: 2 };
type C = { c: 3 };
// (A | B) & C ⇒ either {a} or {b}, plus {c}
Return a new object with an updated timestamp.
Update updatedAt on a sellable without mutation.