From 6739c463c0463454aad317a34fd2808e588bb7d2 Mon Sep 17 00:00:00 2001 From: Dmitry Maevsky Date: Thu, 18 Jul 2019 09:36:55 +0900 Subject: [PATCH] Augment Writable store interface with a get() method, and amend writable implementation accordingly --- src/runtime/store/index.ts | 11 ++++++++++- test/store/index.ts | 1 + 2 files changed, 11 insertions(+), 1 deletion(-) 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]); });