Skip to content

Commit d0c3713

Browse files
committed
feat: 🎸 improve useObservable() type annotations
1 parent 70697d9 commit d0c3713

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

src/useObservable.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,16 @@
11
import { useEffect, useState } from 'react';
22

3-
const useObservable = <T>(observable$, initialValue?: T): T | undefined => {
3+
export interface Observable<T> {
4+
subscribe: (
5+
listener: (value: T) => void
6+
) => {
7+
unsubscribe: () => void;
8+
};
9+
}
10+
11+
function useObservable<T>(observable$: Observable<T>): T | undefined;
12+
function useObservable<T>(observable$: Observable<T>, initialValue: T): T;
13+
function useObservable<T>(observable$: Observable<T>, initialValue?: T): T | undefined {
414
const [value, update] = useState<T | undefined>(initialValue);
515

616
useEffect(() => {
@@ -9,6 +19,6 @@ const useObservable = <T>(observable$, initialValue?: T): T | undefined => {
919
}, [observable$]);
1020

1121
return value;
12-
};
22+
}
1323

1424
export default useObservable;

0 commit comments

Comments
 (0)