Executando verificação de segurança...
1

Null e Undefined não sao tipos de dados. Correspondem a representações de valores. Cada linguagem lida com isso de alguma forma.

No js Null e Undefined foram denominados e "implementados" como tipos da linguagem para que seja possível realizar a coerção entre tipos de forma natural (https://developer.mozilla.org/en-US/docs/Glossary/Type_coercion) as operações de comparação não estrita (o ==) é uma mágica polemica no js, amada por poucos e odiada por muitos... Essa é uma discussão ampla e envolve aspectos profundos...

Outro ponto importante sobre o undefined é que foi feito como uma "arte manha" da linguagem para que seu código errado (com o tempo vc perceberá) não gere um erro em execução! Na época inicial da linguagem foi interessante pois era o que chamavam de (parâmetro opcional), e acesso seguro a varáveis sem valores. Hj em dia usar undefined para representar alguns conceitos é um crime!

O typescript está sendo e será o futuro do js, tipagem correta e 'forte' oferece segurança em tempo de edição/compilação.

Programei anos em js puro e a pior coisa são erros escondidos por comparações erradas e falta de checagem de tipos antes de usar um dado.

A dica é:

  1. Nunca use undefined. mas sempre teste qud necessário. Ele existe para representar um "endereço de mémoria" inacessível. Ou seja, a linguagem em muitas situações, ao invés de dá um erro de "acesso" ela vai lhe retornar undefined. Ex: argumento de função que não foi preenchido, ou acesso a uma propriedade inexistente via indíce (objeto["xxx"]), ou variável declarada sem valor atribuído;
  2. O null deve ser utilizado para representar uma referência "vazia". Ou seja a "área de memória" existe mas está vazia sem valor "semântico" definido o valor presente é o "null";
  3. Para garantir que o garbage colector trabalhe corretamente e limpe a memória evite referências cíclicas;

Realmente é complicado entender de primeira a real desses "tipos", com o tempo vc vai sentindo na pele o armengue geral do js... Neste caso mesmo o null é uma keyword da linguagem e o undefined é uma prioridade global (uma variável global)...

Carregando publicação patrocinada...