The Temporal Dead Zone, or why the TypeScript codebase is full of var statements