Skip to content

Commit 3437fb3

Browse files
committed
v1.0.2
Better TypeScript types for `getSignal()` and `SignalOptions`.
1 parent d0cb632 commit 3437fb3

File tree

6 files changed

+15
-12
lines changed

6 files changed

+15
-12
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
### v1.0.2
2+
Better TypeScript types for `getSignal()` and `SignalOptions`.
3+
14
### v1.0.1
25
Method `getSignal()` now accepts `SignalOptions` as the second argument. This allows you to set the initial value and the equality check function.
36

projects/ngx-reactive-storage/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "ngx-reactive-storage",
3-
"version": "1.0.1",
3+
"version": "1.0.2",
44
"license": "MIT",
55
"private": false,
66
"author": {

projects/ngx-reactive-storage/src/lib/idb.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,8 @@ export class RxStorage implements ReactiveStorage {
5757
return obs;
5858
}
5959

60-
getSignal<T>(key: string, options?: SignalOptions): Signal<T | undefined> {
61-
const s = this.observer.getSignal<T>(key, options?.initialValue, options?.equal);
60+
getSignal<T, N = undefined>(key: string, options?: SignalOptions<T, N>): Signal<T | N> {
61+
const s = this.observer.getSignal<T, N>(key, options?.initialValue, options?.equal);
6262
this.get(key).catch();
6363
return s;
6464
}

projects/ngx-reactive-storage/src/lib/local-storage.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ export class RxLocalStorage implements ReactiveStorage {
4747
return this.observer.getObservable<T>(key, value);
4848
}
4949

50-
public getSignal<T>(key: string, options?: SignalOptions): Signal<T | undefined> {
50+
public getSignal<T, N = undefined>(key: string, options?: SignalOptions<T, N>): Signal<T | N> {
5151
const str = localStorage.getItem(this.prefixed(key));
5252
let value: T | undefined;
5353
if (str !== null) {
@@ -57,7 +57,7 @@ export class RxLocalStorage implements ReactiveStorage {
5757
}
5858
}
5959
this.startListening(key);
60-
return this.observer.getSignal<T>(key, value ?? options?.initialValue, options?.equal);
60+
return this.observer.getSignal<T, N>(key, value ?? options?.initialValue, options?.equal);
6161
}
6262

6363
public get<T = string>(key: string): Promise<T | null | undefined> {

projects/ngx-reactive-storage/src/lib/observer.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,14 +63,14 @@ export class Observer {
6363
* The key becomes "observed" and future modifications will be
6464
* written to the returned signal.
6565
*/
66-
public getSignal<T>(key: string, initialValue: unknown, equal?: ValueEqualityFn<T | undefined>): Signal<T | undefined> {
66+
public getSignal<T, N = undefined>(key: string, initialValue: T | N | undefined, equal?: ValueEqualityFn<T | N | undefined>): Signal<T | N> {
6767
let s = this.signals.get(key);
6868
if (!s) {
69-
s = signal((initialValue as T) ?? undefined, { equal });
69+
s = signal<T | N | undefined>(initialValue, { equal });
7070
this.signals.set(key, s);
7171
}
7272
s.set(initialValue ?? undefined);
73-
return s.asReadonly() as Signal<T | undefined>;
73+
return s.asReadonly() as Signal<T | N>;
7474
}
7575

7676
public dispose() {

projects/ngx-reactive-storage/src/lib/types.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ export type ReactiveStorage = {
2323
*
2424
* If localStorage is being used as the storage, the value will be pushed synchronously.
2525
*/
26-
getSignal<T>(key: string, options?: SignalOptions): Signal<T | undefined>;
26+
getSignal<T, N = undefined>(key: string, options?: SignalOptions<T, N>): Signal<T | N>;
2727

2828
/**
2929
* Set a key-value pair
@@ -51,7 +51,7 @@ export type ReactiveStorage = {
5151
dispose(): void;
5252
}
5353

54-
export type SignalOptions<T = unknown> = {
55-
initialValue?: unknown;
56-
equal: ValueEqualityFn<T>;
54+
export type SignalOptions<T = unknown, N = T> = {
55+
initialValue?: N;
56+
equal?: ValueEqualityFn<T | N | undefined>;
5757
};

0 commit comments

Comments
 (0)