import {useState} from './react'; export interface Actions { set: (list: T[]) => void; push: (item: T) => void; filter: (fn: (value: T) => boolean) => void; sort: (fn?: (a: T, b: T) => number) => void; } const useList = (initialList: T[] = []): [T[], Actions] => { const [list, set] = useState(initialList); return [list, { set, push: (entry) => set([...list, entry]), filter: (fn) => set(list.filter(fn)), sort: (fn?) => set([...list].sort(fn)), }]; }; export default useList;