TextArea uses carrage-return('\r'), line-feed('\n') style chars for line breaks. You may not see the chars even in debugger as they will be interpreted to new lines in those displays.
They may well be output to your html page with the line break:
<div>
HI,
i am good.
</div>
but the browser will ignore it without the <br />, as you correctly stated
Try this:
var stringAsHtml = myTextArea.Text.Replace("\r\n", "<br />\r\n");
var stringAsHtml = $(selector).val().Replace("\r\n", "<br />\r\n");
If will preserve the line break in the markup to make it easier to read. the output with then be like this:
<div>
HI, <br />
i am good.
</div>
Hope that helps ^_^