All of the above are a combination of of trivial automated code refactorings and some manual work because there's no silver bullet:
* writing terrible code to get something working, then breaking it down and putting it back up as something production ready
Automated: Extract method, move code, pull members up/down, rename etc.
* changing core data structure and updating all the code that uses it
Depending on what exactly you're changing. From as simple as automated "update type signatures of all affected functions and methods" to automated "rename" to yes, hunting down compiler errors
* solving some problems in separate projects and combining them together and
* copy-pasting code from another project and adjusting it to a current project
Once again, depending on what and how you combine, using the things from above.
There are more powerful tools than "oh, let's run the compiler for each change and manually fix all the errors". The flow should be "let's run all the automated refactorings and then run the compiler to see if those missed something". And these automated refactorings are often reversible with a simple Cmd/Ctrl-Z.
Ah, yes. And many of these are available even for dynamically typed languages (but not as powerful and sometimes with caveats, for obvious reasons).