Augment Writable<T> store interface with a get() method, and amend writable implementation accordingly

pull/3263/head
Dmitry Maevsky 6 years ago
parent 2664260527
commit 6739c463c0

@ -28,6 +28,11 @@ export interface Readable<T> {
/** Writable interface for both updating and subscribing. */
export interface Writable<T> extends Readable<T> {
/**
* Get value.
*/
get(): T;
/**
* Set value and inform subscribers.
* @param value to set
@ -64,6 +69,10 @@ export function writable<T>(value: T, start: StartStopNotifier<T> = noop): Writa
let stop: Unsubscriber;
const subscribers: Array<SubscribeInvalidateTuple<T>> = [];
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<T>(value: T, start: StartStopNotifier<T> = noop): Writa
};
}
return { set, update, subscribe };
return { get, set, update, subscribe };
}
/** One or more `Readable`s. */

@ -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]);
});

Loading…
Cancel
Save