i dont know what statically typed language you are using that never requires specifying types. As far as i know only ocaml works this way.
Different languages support different levels of type inference. When im writing rust and typescript im often specifying types this way for structs and function signatures.
With llms what often happens is i write a parameter or variable name and it infers from the name what the type is because i have used the same name somewhere else in my codebase. This would not work without llm autocomplete