New password generation
You've four for-loops that are doing the same with different input. Make a function for this logic and call it with the different arrays.

I don't know how typescript handles it and how often you call this function, but it could be better to define your characters outside of this because generating them every time you call this function is not necessary.

Besides, you don't need to define your alphabet twice. You can use toUpperCase/toLowerCase.

And last: From an outsiders perspective, I have no idea what this code is for:

 return 0.5 - Math.random()


You should make a function for it or at the very least, write a comment for it.