import { useState, useEffect } from "react";
import { Observable } from "rxjs";
export type ObservableValueType<T> = T extends Observable<infer X> ? X : never;
export function useObservable<U extends Observable<any>>($: U) {
type T = ObservableValueType<U>;
const [value, setValue] = useState<T>();
const subscription = $.subscribe(setValue);
return () => subscription.unsubscribe();