// js
const converter = (obj) => ({ type: obj.type });
// ts
const converter = <O extends { type: { toString: () => string } }>(obj: O) => ({ type: obj.type.toString() });
а у енума вообще гарантирована какая-то последовательность?
Не совсем понятно, что конкретно хочет автор.
[объект].forEach вызывает сомнения. Может всё-таки массив?
const createTimeout = (fn, timeout, ...args) => {
let isInvoked = false
const timeoutFn = () => {
if(isInvoked) {
return;
}
isInvoked = true
fn(...args)
}
let timeoutId = setTimeout(timeoutFn, timeout);
return {
isInvoked: () => isInvoked,
reset: (newTimeout = timeout) => {
if(isInvoked) {
return false;
}
clearTimeout(timeoutId);
timeoutId = setTimeout(timeoutFn, newTimeout);
return true;
}
}
}
const t = createTimeout(() => console.log(1), 100)
t.reset(1000)
Нет.
Это не делает код хорошим. И, главное, он элементарно переписывается во вполне нормальный.
Я тебе выше написал решение. Тебе остаётся лишь сделать нужный входной тип объекта. Хотя в твоём случае вообще непонятно в чём проблема. У тебя есть входящий тип, который может поменяться автогенератором, как я понимаю. Сохрани у себя локально последний сгенерированный тип и укажи его как входной тип.
Но это ладно, если бы ты переписал этот конвертер нормально, то, внезапно, ты бы мог указать и тип для возвращаемого объекта и все спорные места тебе бы сразу просветились.