Da trilha de TypeScript Este conceito ainda não saiu como card do dia. ir para o card de hoje

TypeScript Ferramentas Intermediário

tsconfig e modo strict

O tsconfig.json é o arquivo de configuração do compilador TypeScript. Ele define como o código será verificado e transpilado, incluindo o nível de rigor do sistema de tipos. A opção "strict": true ativa um conjunto de verificações rigorosas que ajudam a evitar erros comuns em tempo de compilação.

Entre as verificações ativadas por strict, destacam-se noImplicitAny (impede que variáveis e parâmetros tenham tipo any inferido implicitamente) e strictNullChecks (faz com que null e undefined sejam tipos distintos e não atribuíveis a outros tipos sem tratamento explícito). Já noUncheckedIndexedAccess não é ativado por strict, mas é altamente recomendado: ele adiciona undefined ao tipo de retorno de acessos por índice, forçando a verificação de existência.

Neste card, você vai aprender a configurar essas opções e a escrever código que se beneficia delas. O objetivo é tornar seus programas mais seguros e previsíveis, capturando erros antes mesmo de executar o código.

Pontos-chave

  • "strict": true ativa várias verificações, incluindo noImplicitAny e strictNullChecks.
  • noImplicitAny proíbe que o compilador infira any quando não consegue determinar um tipo.
  • strictNullChecks separa null e undefined dos demais tipos, exigindo tratamento explícito.
  • noUncheckedIndexedAccess adiciona undefined ao tipo de acessos por índice, como arr[0].
  • Para ativar noUncheckedIndexedAccess, é preciso defini-lo explicitamente, pois não faz parte de strict.
tsconfig_strict_example.ts
// Exemplo que demonstra os efeitos de strict, noImplicitAny, strictNullChecks e noUncheckedIndexedAccess.
// Para compilar, use um tsconfig.json com as opções ativadas.

// 1. noImplicitAny: parâmetro sem tipo gera erro se a opção estiver ativa.
// function soma(a, b) { return a + b; } // Erro: parâmetros implicitamente any
function soma(a: number, b: number): number {
  return a + b;
}

// 2. strictNullChecks: null e undefined não são atribuíveis a number.
function dobra(valor: number | null): number {
  if (valor === null) {
    return 0; // tratamento explícito
  }
  return valor * 2;
}

// 3. noUncheckedIndexedAccess: acesso por índice retorna T | undefined.
function primeiroElemento(arr: number[]): number | undefined {
  const primeiro = arr[0]; // tipo: number | undefined
  if (primeiro === undefined) {
    return undefined;
  }
  return primeiro;
}

// Testando as funções
console.log(soma(2, 3)); // 5
console.log(dobra(5)); // 10
console.log(dobra(null)); // 0
console.log(primeiroElemento([10, 20])); // 10
console.log(primeiroElemento([])); // undefined

Exercícios

  1. 1
    Fácil

    Ativando noImplicitAny

    Escreva uma função multiplicar que recebe dois parâmetros e retorna o produto. O código deve compilar sem erros mesmo com noImplicitAny ativado. Use anotações de tipo explícitas.

    Resolver
  2. 2
    Médio

    Tratando null com strictNullChecks

    Crie uma função obterComprimento que recebe uma string ou null e retorna o comprimento da string. Se for null, retorne 0. O código deve compilar com strictNullChecks ativo.

    Resolver
  3. 3
    Desafio

    Acesso seguro com noUncheckedIndexedAccess

    Implemente uma função somaArray que recebe um array de números e retorna a soma de todos os elementos. O código deve compilar com noUncheckedIndexedAccess ativo, tratando o fato de que o acesso por índice pode retornar undefined.

    Resolver

Continue estudando