Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Versão mais atual do Typescript já checa os "null" por padrão?

Estou usando no meu projeto a versão "ES2022" e mesmo sem configurar o "strictNullChecks" como "true" no meu projeto, o typescript já estava checando os campos "null" e me fazendo tratá-los desde o começo do desenvolvimento da aplicação. Nas versões mais atuais ele já faz isso por padrão?

2 respostas
solução!

Olá, Jorge!

Pelo que entendi, você está usando a versão "ES2022" e percebeu que o TypeScript está checando os campos "null" mesmo sem ter configurado o "strictNullChecks" como "true". Sua pergunta é se nas versões mais atuais do TypeScript isso já é feito por padrão.

Bem, a checagem de valores "null" e "undefined" no TypeScript não é diretamente relacionada à versão do ECMAScript que você está utilizando, mas sim a uma configuração específica do TypeScript chamada "strictNullChecks". Quando essa configuração está ativada (ou seja, definida como "true" no arquivo tsconfig.json), o TypeScript não permite que valores "null" e "undefined" sejam atribuídos a variáveis a menos que você explicitamente declare que a variável pode receber esses valores.

Por exemplo, se "strictNullChecks" está ativado, o seguinte código resultaria em um erro:

let x: number;
x = null; // Erro: Type 'null' is not assignable to type 'number'.

Mas se você declarar que x pode ser number ou null, não haverá erro:

let x: number | null;
x = null; // Sem erro

Em relação à sua pergunta, a partir da versão 2.0 do TypeScript, a configuração "strictNullChecks" foi introduzida, mas ela não é ativada por padrão. No entanto, se você ativar a configuração "strict" no seu arquivo tsconfig.json, isso ativará "strictNullChecks" junto com várias outras verificações rigorosas. Talvez seja isso que você esteja experimentando.

Espero ter ajudado e bons estudos!

Muito obrigado pela resposta Renan. Olhando meu tsconfig novamente, realmente o parametro "strict" está ativo. Como uso o comando "npx tsc --init" para criar o tsconfig padrão, esqueci de apagar essa propriedade dele.