Na seção de tipos dos documentos, é mencionado que
O operador :: pode ser usado para anexar anotações de tipo a expressões e variáveis em programas. Existem duas razões principais para fazer isso:
- Como uma afirmação para ajudar a confirmar se o seu programa funciona da maneira esperada,
- Para fornecer informações extras de tipo ao compilador, o que pode melhorar o desempenho em alguns casos
No entanto, não consigo encontrar onde estão as menções em quais "casos" especificamente as anotações de tipo ajudam a melhorar o desempenho.
Surpreendentemente, mais tarde menciona na seção de dicas de desempenho
A anotação de tipo não melhorará (e poderá até prejudicar) o desempenho se o tipo for abstrato ou construído em tempo de execução.
Não discute exaustivamente os casos em que isso realmente prejudicaria o desempenho para que possam ser evitados.
Eu estava procurando uma resposta para a pergunta do título na documentação. Apesar de serem legais, agora estou ainda mais confuso. Existem regras simples a serem seguidas sobre quando ou não anotar tipos para os três casos do título?