Я думаю, вы ищете что-то вроде этого:
Вы устанавливаете тайм-аут для каждого символа строки, но даете каждому таймауту дополнительную задержку
Итак, первый символ будет записан после задержки 0 мс Второй после задержки 100 мс Третий после задержки 200 мс И так далее
Пример:
function typewriter(element, text, delay = 100) {
for (let i = 0; i < text.length; i++) {
setTimeout(() => {
element.innerHTML += text[i];
}, delay * i);
}
}
const el = document.getElementById("typewriter");
typewriter(el, "Lorem ipsum dolor sit amet");
<h1 id="typewriter"></h1>