수정해 보았는데 아무래도 클릭시점에 setTimeout 3개가 동시에 작동하는 건지 중지가 되지 않더군요.
그래서 다음과 같이 setInterval 로 바꾸니까 작동이 되었습니다!
let h1태그 = document.querySelector("h1");
let 원래글씨 = document.querySelector("h1").innerHTML;
var timeout = 0;
$(".btn").click(function () {
clearInterval(timeout);
h1태그.innerHTML = " ";
var index = 0;
timeout = setInterval(function () {
h1태그.innerHTML = h1태그.innerHTML + 원래글씨[index++];
if (index == 원래글씨.length) {
clearInterval(timeout);
}
}, 1000);
});