type TimerState = 'init' | 'start' | 'pause' | 'resume' | 'stop'; class Timer { duration: number = 0; state: TimerState = 'init'; _startTime: number = 0; _time: number = 0; constructor() {} start() { this.state = 'start'; this._startTime = Date.now(); this._time = this._startTime; } pause() { if (this.state === 'stop' || this.state === 'pause') { return; } this.state = 'pause'; this.duration += Date.now() - this._time; } resume() { if (this.state !== 'pause') { return; } this.state = 'resume'; this._time = Date.now(); } stop() { if (this.state === 'stop') { return; } if (this.state === 'pause') { this.state = 'stop'; return; } this.state = 'stop'; this.duration += Date.now() - this._time; } getDurationSeconds() { return Math.round(this.duration / 1000); } } export default Timer;