Pular para o conteúdo principal
Módulo 7 · Lição 1 de 213/14 no curso~12 min
Lições do módulo (1/2)

Configuração com tsconfig.json

O arquivo tsconfig.json especifica o diretório raiz de um projeto TypeScript e as opções do compilador necessárias para construir o projeto.

Sempre que você executa tsc em um diretório de projeto, o compilador procura esse arquivo para orientar seu comportamento de compilação.


Estrutura de um arquivo tsconfig.json

Um arquivo de configuração típico é assim:

Code
{
  "compilerOptions": {
    "target": "es2022",
    "module": "commonjs",
    "strict": true,
    "esModuleInterop": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true,
    "outDir": "./dist"
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules", "**/*.spec.ts"]
}

As principais propriedades são:

  • compilerOptions: Configurações para o compilador.
  • include: Especifica os arquivos ou pastas a serem compilados.
  • exclude: Especifica os arquivos ou pastas a serem ignorados durante a compilação.

Principais opções do compilador

Aqui estão algumas das configurações mais importantes que você deve saber:

  1. target: Especifica a versão da saída JavaScript do compilador (por exemplo, es5, es6/es2015, es2020, esnext).
  2. module: Especifica o sistema de módulos usado no código compilado (por exemplo, commonjs, esnext, node16).
  3. strict: permite um amplo conjunto de comportamentos rigorosos de verificação de tipo. É altamente recomendável definir como true para máxima segurança de tipo. Ele permite opções como:
    • noImplicitAny: gera um erro em expressões e declarações com um tipo any implícito quando nenhuma anotação de tipo é fornecida.
    • strictNullChecks: Impede a atribuição de null ou undefined a tipos que não os incluem explicitamente em sua união.

Experimente você mesmo

Exercício 1: Tratamento de strictNullChecks

Exercício#ts.m7.l1.e1
Tentativas: 0Carregando…

Na opção strictNullChecks: true em tsconfig.json, não podemos atribuir nulo ou indefinido a tipos primitivos. Declare uma função chamada parseAge que aceita uma entrada do tipo string | null e retorna um número se a entrada não for nula e for um número inteiro válido, caso contrário, retorna 0. Manipule explicitamente o caso nulo para passar na compilação estrita.

Carregando editor…
Mostrar dica

Verifique se a entrada é nula no início da função e retorne 0 imediatamente antes de processar a string.

Solução disponível após 3 tentativas

Exercício 2: digitação estrita sem qualquer implícito

Exercício#ts.m7.l1.e2
Tentativas: 0Carregando…

Em noImplicitAny: true, qualquer parâmetro cujo tipo não possa ser inferido deve ser digitado explicitamente. Crie uma função chamada processItems que aceita um array de itens (matriz de números) e uma função de retorno de chamada que recebe um único número como argumento e não retorna nada. Certifique-se de não usar nenhum e digite tudo explicitamente.

Carregando editor…
Mostrar dica

Declare a função com assinatura function processItems(items: number[], callback: (item: number) => void): void.

Solução disponível após 3 tentativas