let is_paused = false;
const timeout = setTimeout(() => {
if (is_paused) return;
console.log("timeout!");
}, 1000);
Тогда снимать и возвращать таймер можно просто:
is_paused = true; //снять
is_paused = false; //вернуть
А вот это вообще не имеет смысла:
const fn = () => timeout;
Потому что timeout - число (номер таймера). Так что fn() всегда будет возвращать некую числовую константу, которую можно получить и так, обращаясь непосредственно к timeout, которая не меняется. То есть timeout - не ссылка на объект таймера, а просто число.
Возвращаемый идентификатор таймера (timeout) функцией setTimeout нужен только для того, чтобы иметь возможность остановить таймер полностью. Встроенных возможностей ставить на паузу и снова запускать - нет. Можно либо так, как я реализовал выше, через внешнюю переменную, либо каждый раз создавать
новый таймер с
новым идентификатором (и тогда timeout лучше сделать переменной, а не константой).