TypeScript: Tipos globais

Neste artigo rápido e simples, gostaria de compartilhar uma técnica que remove a necessidade de importar um tipo na hora utiliza-lo no seu código.
Em certas situações, temos tipos ou interfaces que são referenciadas em todo canto da aplicação, o que faz com que muitos modulos declarem explicitamente a dependencia desse tipo através de um import
ou require
Através da keyword declare
e do sufixo .d.ts
, somos capazes de criar tipos que não precisam ser importados para que sejam utilizados.
No meu projeto de pomodoro, tenho o arquivo src/commons.d.ts
, onde declaro as duas ITimer e ITimerState:
Repare que não há necessidade de usar export
, e sim declare
. Essas interfaces só existem em tempo de compilação, elas não farão parte do código em tempo de execução. Servem somente para informar as tipagens para o compilador do TypeScript.
Arquivos .d.ts
podem ser criados em qualquer diretório do projeto TypeScript, e vão disponibilizar as interfaces e tipos de forma global para outros módulos dentro do projeto.
Aqui tem um exemplo de um reducer que usa a interface ITimerState sem precsar importa-la: