Differ
Interfaces for describing changes to a value as patches. A
Differ<T, Patch> compares an old and new value, creates a patch for the
difference, combines patches in order, and applies a patch to an old value to
produce an updated value.
Models
Describes how to compute, combine, and apply patches for values of type T.
When to use
Use to model patch-based updates for a value type when callers need to compute a patch from two values, combine patches, and apply a patch later.
Details
A Differ provides an empty patch, computes the patch between two values,
combines patches, and applies a patch to an old value to produce an updated
value.
Signature
interface Differ<in out T, in out Patch> { readonly empty: Patch; combine(first: Patch, second: Patch): Patch; diff(oldValue: T, newValue: T): Patch; patch(oldValue: T, patch: Patch): T;}