Entendendo o tsconfig.json
Aprenda a configurar o compilador TypeScript com o arquivo tsconfig.json e entenda suas principais opções.
Ao adotar o TypeScript, um arquivo se torna o maestro do seu projeto: o tsconfig.json. Este arquivo de configuração informa ao compilador TypeScript (tsc) como ele deve tratar seus arquivos, quais recursos da linguagem usar e onde colocar os arquivos JavaScript compilados.
TypeScript: Uma linguagem que compila para JavaScript
Antes de mergulhar nas configurações, é importante entender uma característica fundamental do TypeScript: ele não é executado diretamente pelos navegadores ou pelo Node.js. Em vez disso, o TypeScript é uma linguagem que compila (ou "traduz") para JavaScript.
O que é compilação?
Compilação é o processo de transformar código de uma linguagem em outra. No caso do TypeScript:
- Entrada: Código TypeScript (
.ts) com tipos, interfaces e recursos avançados - Processo: Compilador TypeScript (
tsc) analisa e transforma o código - Saída: Código JavaScript (
.js) puro, que pode ser executado em qualquer ambiente
// Código TypeScript (entrada)
function saudar(nome: string): string {
return `Olá, ${nome}!`;
}// Código JavaScript compilado (saída)
function saudar(nome) {
return `Olá, ${nome}!`;
}Por que TypeScript precisa ser compilado?
O TypeScript adiciona recursos que o JavaScript puro não possui:
- Tipagem estática (
nome: string) - Interfaces e tipos personalizados
- Recursos de linguagem mais avançados
- Verificações de erro em tempo de compilação
Como os navegadores e o Node.js só entendem JavaScript, precisamos "traduzir" o TypeScript para JavaScript antes de executar.
Ferramentas para executar TypeScript
Existem duas abordagens principais:
1. Compilação tradicional (tsc)
# Compila TypeScript para JavaScript
npx tsc arquivo.ts
# Executa o JavaScript resultante
node arquivo.js2. Execução direta (ts-node)
# Executa TypeScript diretamente (sem gerar arquivo .js)
npx ts-node arquivo.tsO ts-node é especialmente útil durante o desenvolvimento, pois permite testar código TypeScript rapidamente sem gerar arquivos JavaScript intermediários.
Desenvolvimento vs Produção
- Durante o desenvolvimento: Use
ts-nodepara testes rápidos e experimentação - Em produção: Use
tscpara compilar e gerar arquivos JavaScript otimizados
Dica: O ts-node é ideal para aprender e experimentar, mas em projetos reais você sempre compilará com tsc para gerar o código JavaScript final.
O que é o tsconfig.json?
O tsconfig.json é um arquivo que fica na raiz do seu projeto e contém uma série de opções de configuração para o compilador TypeScript. Quando você roda o comando tsc (ou npm run build, se configurado nos scripts), o compilador procura por este arquivo para saber exatamente o que fazer.
Como Gerar o Arquivo
Você pode criar o arquivo manualmente, mas a forma recomendada de começar é deixar que o próprio TypeScript gere um arquivo de modelo para você. No terminal, na raiz do seu projeto, execute:
npx tsc --initEste comando cria um tsconfig.json com dezenas de opções, a maioria comentada. Não se assuste! Para começar, você só precisa se preocupar com algumas delas.
Opções Essenciais para Iniciantes
Abaixo estão as opções mais importantes que você deve conhecer ao iniciar um projeto.
{
"compilerOptions": {
/* Basic Options */
"target": "ES2016", // Versão do JavaScript para a qual o código será compilado.
"module": "commonjs", // Sistema de módulos a ser usado no código compilado.
"strict": true, // Habilita um conjunto de regras estritas de verificação de tipo.
/* Module Resolution Options */
"esModuleInterop": true, // Permite compatibilidade entre diferentes sistemas de módulos.
/* Output Directory */
"outDir": "./dist", // Pasta onde os arquivos .js compilados serão salvos.
"rootDir": "./src" // Pasta onde estão seus arquivos .ts de origem.
},
"include": ["src/**/*"], // Diz ao compilador para incluir todos os arquivos dentro da pasta 'src'.
"exclude": ["node_modules"] // Ignora a pasta node_modules.
}Explicação das Opções Chave
-
"target": Define para qual versão do JavaScript seu código TypeScript será "traduzido"."ES2016"é um bom padrão, pois é compatível com a maioria dos ambientes Node.js e navegadores modernos. -
"module": Especifica o sistema de módulos que o JavaScript gerado usará."commonjs"é o padrão para projetos Node.js. Para projetos front-end que usam navegadores modernos,"ESNext"é uma escolha comum. -
"strict": Esta é uma das opções mais importantes. Quandotrue, ela ativa um conjunto de verificações rigorosas (como não permitirnullouundefinedonde não deveriam) que ajudam a pegar erros mais cedo. É altamente recomendado mantê-la comotrue. -
"esModuleInterop": Resolve algumas inconsistências entre os sistemas de módulos CommonJS (usado pelo Node.js) e os Módulos ES (o padrão do JavaScript moderno). Mantê-la comotrueevita dores de cabeça ao importar pacotes. -
"outDir": O diretório de saída. É aqui que otsccolocará os arquivos.jsresultantes da compilação. É uma boa prática separar o código-fonte (src) do código compilado (dist). -
"rootDir": O diretório raiz do seu código-fonte. Otscusará esta pasta como ponto de partida para compilar os arquivos. -
"include"e"exclude": Essas opções no nível raiz (fora decompilerOptions) dizem ao compilador quais arquivos e pastas ele deve processar e quais deve ignorar.
Fluxo de Trabalho Típico
Com o tsconfig.json configurado, seu fluxo de trabalho será:
- Escrever seu código na pasta
src/usando arquivos.ts. - Rodar
npm run build(que executatsc). - O TypeScript compilará os arquivos de
src/para JavaScript e os salvará emdist/. - Você executará o código da pasta
dist/em produção.
Entender o tsconfig.json é um passo fundamental para se tornar proficiente em TypeScript e ter controle total sobre seus projetos.