diff --git a/src/runtime/store/index.ts b/src/runtime/store/index.ts index c85163003f..87ed8d85d6 100644 --- a/src/runtime/store/index.ts +++ b/src/runtime/store/index.ts @@ -28,6 +28,11 @@ export interface Readable { /** Writable interface for both updating and subscribing. */ export interface Writable extends Readable { + /** + * Get value. + */ + get(): T; + /** * Set value and inform subscribers. * @param value to set @@ -64,6 +69,10 @@ export function writable(value: T, start: StartStopNotifier = noop): Writa let stop: Unsubscriber; const subscribers: Array> = []; + function get(): T { + return value; + } + function set(new_value: T): void { if (safe_not_equal(value, new_value)) { value = new_value; @@ -99,7 +108,7 @@ export function writable(value: T, start: StartStopNotifier = noop): Writa }; } - return { set, update, subscribe }; + return { get, set, update, subscribe }; } /** One or more `Readable`s. */ diff --git a/test/store/index.ts b/test/store/index.ts index 6f5ef6abdd..d32cbdc66a 100644 --- a/test/store/index.ts +++ b/test/store/index.ts @@ -19,6 +19,7 @@ describe('store', () => { count.set(3); count.update(n => n + 1); + assert.equal(count.get(), 4); assert.deepEqual(values, [0, 1, 2]); });