HTMLElement/Event Tipos do DOM
Última atualização: 2026-10-22
HTMLElement/Event Tipos do DOM
Todos os tipos do DOM vêm da lib DOM nativa do TypeScript: os elementos formam uma cadeia de herança (EventTarget → Node → Element → HTMLElement → HTMLInputElement ...), e os objetos de evento carregam target. Tipos precisos vêm do estreitamento: instanceof transforma HTMLElement em uma subclasse concreta antes de você poder acessar .value; o mesmo vale para e.target dentro dos manipuladores de eventos.
| Grupo | Configuração e Prática |
|---|---|
| Tipo | Sintaxe |
| Modo strict | Não 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
// estreitamento de elementos: instanceof reduz para uma subclasse concreta
function setText(el: HTMLElement, text: string) {
if (el instanceof HTMLInputElement) {
el.value = text; // .value só existe após o estreitamento
} else {
el.textContent = text; // elementos comuns usam textContent
}
}
// estreitamento de eventos: e.target é EventTarget | null
function onClick(e: Event) {
const t = e.target;
if (t instanceof HTMLInputElement) {
console.log(t.value); // disponível apenas após o estreitamento
}
}
⚙️ Parâmetros
| HTMLElement | A base comum de todos os elementos HTML: apenas membros genéricos como .textContent/.style; querySelector retorna Element por padrão, estreitado por etiqueta via seu parâmetro genérico |
|---|---|
| HTMLInputElement | Uma subclasse concreta para inputs com extras como .value/.name/.checked — o caso clássico de membros disponíveis apenas após o estreitamento |
| Event.target | O elemento que o evento realmente atingiu, tipado EventTarget | null (pode ser window, document, ...); quase sempre precisa de estreitamento por instanceof antes do uso |
Retorno:O estreitamento não tem valor de retorno — ele apenas faz o compilador "ver" a referência como um tipo mais preciso dentro daquele ramo, com custo zero em tempo de execução.
▶ Exemplo
Edite o código abaixo e clique em Testar para ver o resultado transpilado:
Saída:
input.value = "dev@example.com"
textContent = "Welcome"
input "email" = "dev@example.com"
clicked <HTMLElement>
(Saída de execução após a transpilação; classes stub substituem o DOM real — o mesmo código com instanceof funciona contra elementos reais no navegador, onde o código DOM realmente roda)