By hand, with the compiler
- What it does well
- You decide every type. The result is as good as your care, and you learn the codebase. The editor's built-in quick fixes, such as inferring parameter types from usage, speed it up.
- Where it falls short
- Slow on a large codebase, and easy to stall halfway. Nothing tells you what order to work in.
- Best when
- Small projects, or a few modules you want to get exactly right.