Как перезапустить таймер с теми же функцией и параметрами, но новым временем?

Для перезапуска таймера с теми же функцией и параметрами, но новым временем в TypeScript можно воспользоваться следующим способом.

Допустим, у вас есть функция, которая запускает таймер. Вот пример функции, которая принимает время (в миллисекундах) и колбэк функцию, которую нужно вызвать по истечении времени:

function startTimer(time: number, callback: () => void) {
    const timerId = setTimeout(() => {
        callback();
    }, time);

    return timerId;
}

Теперь, если вам нужно перезапустить таймер с новым временем, вы можете использовать следующий подход. Пусть у вас есть переменная timerId, в которой сохранен идентификатор текущего таймера. Вы можете отменить текущий таймер с помощью clearTimeout(timerId) и запустить новый таймер с новым временем:

let timerId: NodeJS.Timeout;

function restartTimer(newTime: number, callback: () => void) {
    if (timerId) {
        clearTimeout(timerId);
    }
    
    timerId = startTimer(newTime, callback);
}

Теперь, чтобы перезапустить таймер с новым временем, вам нужно вызвать функцию restartTimer(newTime, callback), где newTime - новое время (в миллисекундах), а callback - функция, которую нужно выполнить по истечении времени.

Это позволит вам перезапустить таймер с теми же функцией и параметрами, но новым временем в TypeScript.