It'll just keep going for however long, but gets cut off at some point on the screen.
It's supposed to. The typewriter effect is just achieved by creating a tiny box the text can be seen through, and then increasing the size of that box--the text is always there, it's just hidden. This is what those animated width properties do.
Crappy example:
// Brackets represent the width of the element.
[]This is sample text. // player sees nothing.
[T]his is sample text. // element widens, revealing the T
[Th]is is sample text. // etc.
The 'white-space: nowrap;' and 'overflow: hidden;' properties are critical to the success of this trick. The overflow property controls whether the player can see text outside the element's confines (i.e. it's width). The white-space part prevented the line from wrapping to the next when it's long.
Without overflow
[]This is some text. // even though the element's width is set so the player shouldn't be able to see it, it's visible because it overflows and is visible. The animation does nothing at all.
Without white-space:nowrap;
[]This is a very very very very very very very very
[]very very very very very very long line. // only the width is effected by the 'typing' trick.
[T]his is a very very very very very very very very
[v]ery very very very very very long line.
[Th]is is a very very very very very very very very
[ve]ry very very very very very long line.
// etc...
In short, the problem you're having is directly caused by the effect you're generating. You can't really have it both ways.
Is there a more effective typewriter code out there that I don't know of?
You can try typed.js, but I don't know how easy it'll be to get it running in Harlowe. At a guess, I'd say not very.