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:
{
"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:
target: Especifica a versão da saída JavaScript do compilador (por exemplo,es5,es6/es2015,es2020,esnext).module: Especifica o sistema de módulos usado no código compilado (por exemplo,commonjs,esnext,node16).strict: permite um amplo conjunto de comportamentos rigorosos de verificação de tipo. É altamente recomendável definir comotruepara máxima segurança de tipo. Ele permite opções como:noImplicitAny: gera um erro em expressões e declarações com um tipoanyimplícito quando nenhuma anotação de tipo é fornecida.strictNullChecks: Impede a atribuição denullouundefineda tipos que não os incluem explicitamente em sua união.
Experimente você mesmo
Exercício 1: Tratamento de strictNullChecks
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.
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
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.
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