Skip to content

Immutable Data

fluth supports immutable data, implemented using limu.

Stream

The set method of the Stream object can immutably modify node data.

typescript
import { $ } from "fluth";
const promise$ = $({ a: 1, b: { c: 2 } });
const oldValue = promise$.value;

promise$.set((state) => (state.a = 3));
const newValue = promise$.value;

console.log(oldValue === newValue); // false
console.log(oldValue.b === newValue.b); // true

Observable

The $then, $thenOnce, $thenImmediate methods of the Observable object can also immutably modify node data.

typescript
import { $ } from "fluth";
const promise$ = $({ a: 1, b: { c: 2 } });
const observer1$ = promise$.$then((state) => (state.a = 3));
const observer2$ = observer1$.$then((state) => (state.a = 4));

console.log(promise$.value === observer1$.value); // false
console.log(observer1$.value === observer2$.value); // false

console.log(promise$.value.b === observer1$.value.b); // true
console.log(observer1$.value.b === observer2$.value.b); // true