null / undefined null e undefined
Última atualização: 2026-10-22
null / undefined null e undefined
null significa "vazio intencional"; undefined significa "não atribuído / ausente". Com strictNullChecks, são tipos independentes e precisam ser tratados antes do uso normal.
| Grupo | Tipos Básicos |
|---|---|
| Tipo | Tipo |
| Modo strict | Necessário |
ℹ️ Info O editor transpila TypeScript para JavaScript e o executa (sem verificação de tipos); veja a Saída de cada exemplo para o resultado da verificação.
📝 Sintaxe
let nickname: string | null = null;
if (nickname !== null) {
nickname.toUpperCase(); // só pode usar após excluir null
}
let maybe = list.find(x => x.ok); // undefined significa que não foi encontrado
⚙️ Parâmetros
| a?.b | Faz curto-circuito para undefined quando o lado esquerdo é null/undefined, sem lançar erro |
|---|---|
| a ?? b | Pega o lado direito quando o esquerdo é null/undefined; 0 e "" não são pulados |
Retorno:Nenhum valor de retorno — null/undefined são anotações de tipo básicas e não produzem código em tempo de execução.
▶ Exemplo
Edite o código abaixo e clique em Testar para ver o resultado transpilado:
Saída:
Ada guest
0
(Saída de execução após a transpilação; com strictNullChecks ativado, chamar missing.length diretamente é um erro de compilação)
💡 Observações
⚠️ Atenção Com strictNullChecks desativado, null/undefined podem ser atribuídos a qualquer tipo e a segurança contra ponteiros nulos fica por conta da sorte. Sempre ative strict em projetos novos.
💡 Dica ?. e ?? são o par de ouro: user?.address?.city ?? "unknown" lê e define um padrão em uma linha.
ℹ️ Info ?? só cai para o lado direito quando a esquerda é null/undefined, preservando 0, false e "" — a diferença crucial em relação a ||.
🏷️ Tipos Básicos Relacionados
💡 Casos relacionados
Mais casos em breve.
📚 Tutoriais relacionados
❓ Perguntas frequentes
P ?? vs ||?
R || trata todo valor falsy (0, "", false) como vazio; ?? apenas null/undefined. Padrões quase sempre devem usar ??, para 0 e "" não serem sobrescritos.
P Como null e undefined devem ser usados semanticamente?
R Convenção: undefined = ainda sem valor (argumento/propriedade ausente); null = esvaziado deliberadamente. Seja consistente dentro de uma API.
P Que tipo o optional chaining produz?
R T | undefined: se qualquer elo da cadeia pode estar vazio, o resultado carrega undefined — use ?? depois ou faça estreitamento.