import { Observer, Accessor } from "./observer"; function _mean(): Observer { let total: number; let count: number; return { observe: (value: number, idx: number) => { if (idx === 0) { total = value; } else { total += value; } count = idx; }, peek: () => total / (count + 1) }; } export type MeanAccessor = (row: T, currentIndex: number) => number; export function mean(): Observer; export function mean(callbackFn: MeanAccessor): Observer; export function mean(callbackFn?: MeanAccessor): Observer | Observer { return callbackFn ? Accessor(_mean, callbackFn) : _mean(); }