TypeScript: Tipos globais

Logo to Typescript

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:

Jack Of All Trades