yarn add progress-it
or
npm install progress-it
import progress from "progress-it"
const effect=console.log
const stateSetter = progress(effect)(false);
const finish=()=>stateSetter(true)
const fail=()=>stateSetter('fail')
setTimeout(finish,1000)
0.0000001 false
0.0000002 false
0.0000004 false
...
0.9999999 false
# after 1000ms
1 true
type Effect = (percent: number, state: boolean | 'fail') => void;
interface IProgressPotions {
interval: number;//default 100
speed: number; //default 0.01
}
type Setter=(newState: boolean | 'fail')=>Setter
const progress: (effect: Effect, option: Partial<IProgressPotions>) => (initState: boolean) => (newState: boolean) => Setter;
const stateSetter:Setter = progress(effect)(false);